ECMAScript中没有块级作用域

  

<script>
    var count = 10;
    for(var i=0;i<count;i++){
        // alert("循环内的弹出框"+i);
        var j = 10;
    }
    // alert("循环外的弹出框"+i);
    alert("循环外的"+j);
</script>

注释中的内容:先弹出九个“循环内的弹出框”+1~9,最后弹出“循环外的弹出框”+10

没有注释的内容:弹出“循环外”+10;

时间: 2024-10-23 03:37:24

ECMAScript中没有块级作用域的相关文章

关于JavaScript中没有块级作用域的理解

引用<JavaScript权威指南>(第六版)中的举例 代码段1: var scope="global"; function f(){ console.log(scope); scope="local" console.log(scope); } f(); 会输出什么? 答案:undefined  global 代码段2: var scope="global"; function f(){ var scope; console.log

es6中添加块级作用域的目的

原本只有函数作用域和全局作用域两种,这就导致出现很多不方便的地方: 1)for循环问题:在看js高程的时候,纠结在第七章好久,就是一个这样的实例 function createFunctions(){ var result = new Array(); for (var i = 0 ; i < 10 ; i ++){ result[i] = function (){ return i; } } return result; } 不管这段代码输出result[i]()中的i是几,结果都是10,这就

JS中的块级作用域,var、let、const三者的区别

1. 块作用域{ } <script type="text/javascript"> { var a = 1; console.log(a); // 1 } console.log(a); // 1 // 可见,通过var定义的变量可以跨块作用域访问到. (function A() { var b = 2; console.log(b); // 2 })(); // console.log(b); // 报错, // 可见,通过var定义的变量不能跨函数作用域访问到 if(

模仿块级作用域

在JavaScript中没有块级作用域的概念.这就意味着在块语句中定义的变量,实际上是在包含函数中而非语句中创建的. <script> for(var i=0;i<5;i++) { } alert(i); </script> 就上面这个例子中,可以弹出i是5,因为for语句事实上是包含在window.onload= function(){}这个函数中,alert也在这个函数中. 而在java.c++中i只会在for循环的语句块中定义,循环一但结束,变量i就会被销毁.而在Jav

匿名函数模仿块级作用域

问题 [无块级作用域]JavaScript中没有块级作用域的概念.这意味着在块语句中定义的变量,实际上是在包含函数中而非语句中创建的. function outputNumbers(count){ for(var i = 0; i < count; i++){ alert(i); } console.log(i); } outputNumbers(2);//弹出0,1输出2 //变量i是定义在outputNumbers()的活动对象中的,因此从它有定义开始,就可以在函数内部随时访问它. 函数中的

block、块级作用域

block:语句块 (或其他语言中的 复合语句) 用来组织零个或多条语句. 包含在{ }里面 通常在流程控制语句 (如 if, for, while)中使用 块级作用域:通过var声明的变量没有块级作用域. 在语句块(block)里声明的变量作用域是其所在的函数或者 script 标签内, 你可以在语句块外面访问到它. 换句话说, 语句块不会生成一个新的作用域. 尽管单独的语句块是合法的语句, 但在JavaScript中你不会想使用单独的语句块,因为它们不像你想象的C或Java中的语句块那样处理

JavaScript的作用;JS常见的三种对话框;==和===的区别;函数内部参数数组arguments在函数内部打印实参;JS的误区:没有块级作用域

JS:客户端(浏览器)脚本语言 弱类型 基于原型 事件驱动 不需要编译(直接运行) JS的作用:表单验证,减轻服务端的压力 添加页面动画效果  动态更改页面内容  Ajax网络请求 (一)常见的对话框 alert()对话框:该方法是window对象的方法,在浏览器中弹出一个对话框(该方法没有返回值)  prompt()对话框:2个参数,一个是浏览器提示信息,第二个是默认的输入框的值,返回值就是输入框的信息  confirm()对话框:在浏览器弹出一个对话框,用户只能选择正确或者取消,返回值对应为

js没有块级作用域

今天看一篇介绍ECMAscript6的博文时,看到let命令的时候突然有点蒙逼....... let命令:let用于变量声明,与var用法类似,但是let是一个局部变量,只在声明的代码块中有效. { let a = 10; var b = 20; } a // not defined b // 20 看到这我觉得这个块级作用域是函数作用域,但是块级作用域和函数作用域是不一样的,比如: function demo(){ var a=1; } console.log(a); a//not defin

《你不知道的JavaScript》 函数作用域和块级作用域

一.函数作用域 可用在代码外添加包装函数,将内部的变量和函数定义隐藏. var a = 2; function foo() { // <- - 添加这一行 var a = 3; console.log( a ); //3 } // <- - 以及这一行 foo(); // <- - 以及这一行 console.log( a ); //2 这种技术必须声明一个具名函数foo(),foo本身“污染”了所在作用域.其次,必须显式地通过函数名( foo( ) )调用这个函数才能运行其中的代码.