js支持词法作用域,即除了极少的例外,对变量的引用会被绑定到声明变量最近的作用域中。 js不支持块级作用域,即变量定义的作用域并不是离其最近的封闭语句或代码块,而是包含它们的函数。 不了解这个会产生一些微妙的bug。 这里的for循环里声明了一个局部变量player,但由于js中变量是函数级作用域, ...
分类:
编程语言 时间:
2016-05-20 09:54:48
阅读次数:
173
一、函数中的arguments对象
每个函数内部都有一个arguments,它能返回函数所接受的所有参数
注意:argumens接收的是实参
如下是利一个利用arguments特性编写的求和函数:
二、关于变量的作用域
在javascript中,不能为变量定义特定的块级作用域,但是可以定义其所属的函数域。
javascript中的全局变量指的是声明在所有函数之外的变量...
分类:
编程语言 时间:
2016-05-18 19:21:25
阅读次数:
130
闭包就是块级作用域:js执行 边解析边执行 脚本语言的特性 在执行的时候预解析已经完成,就提升了变量 定义的变量被函数包着 外界无法访问, 这就是闭包 在js中解决的就是如何访问(沙箱模式:把需要的变量挂在到window汤暴露出去) 无限地归的时候内存不够 因为每次调用都会生成一个新的变量;用闭包解 ...
分类:
其他好文 时间:
2016-05-16 01:45:53
阅读次数:
138
一、js没有块级作用域 在c,java等语言中花括号里的代码都有自己的作用域,而js花括号没有块级作用域,经常会导致一些困惑,不明所以。例如: console.info(color); if(true){ var color = "blue"; } console.info(color); 输出结果 ...
分类:
Web程序 时间:
2016-05-09 20:15:42
阅读次数:
129
深入理解JavaScript变量的作用域 1、JavaScript的作用域链 2、函数体内部,局部变量的优先级比同名的全局变量高。 3、JavaScript没有块级作用域。 4、函数中声明的变量在整个函数中都有定义。 5、未使用var关键字定义的变量都是全局变量。 6、全局变量都是window对象的 ...
分类:
Web程序 时间:
2016-05-06 14:43:47
阅读次数:
145
一 私有变量和函数 js中没有概念上的私有,公有也没有静态和非静态相关概念,有的只能是通过作用于来模仿 函数的块级作用域使得函数内部成员可以不被外部所访问,比如我们使用块级作用于定义一个类 //定义一个命名空间,用于相关类挂靠到该空间下,使得外部通过该命名空间访问某个类型 var MyLib = w ...
分类:
Web程序 时间:
2016-05-05 21:57:42
阅读次数:
120
1.什么是闭包? W3C:闭包,指的是词法表示包括不被计算的变量的函数,也就是说,函数可以使用函数之外定义的变量。 要较好理解闭包,除了形式本身,还应先理解: JS没有块级作用域:见JavaScript作用域; JS的内存回收机制:引用计数。 2.闭包的例 闭包是一种结构,getName引用了外部变 ...
分类:
编程语言 时间:
2016-05-05 12:48:36
阅读次数:
200
看了好多地方讲这两个东西,我一直以为不一样,后来仔细体会发现这两个其实是一样的,没有什么不同。只是使用的位置不同。 函数的自执行: // 下面2个括弧()都会立即执行(function () { /* code */ } ()); // 推荐使用这个(function () { /* code */ ...
分类:
其他好文 时间:
2016-04-29 14:42:11
阅读次数:
129
1. 函数对全局的output进行操作,因为JS没有块级作用域,所以output为1. 2. 函数传入output的值,但函数内只是对参数output做加一操作,没有对全局的output进行操作,所以output为0. 3. 函数内的output值因为函数本身没用,也没有通过参数传递进入,所以对全局 ...
分类:
Web程序 时间:
2016-04-25 17:47:43
阅读次数:
186