作用域有词法作用域和块级作用域之分,javascript属于词法作用域,而在java、C++中却是块级作用域。在javascript中,只有函数能够创建作用域,作用域是以function作为边界的。 先看一段代码:function outPut(){ for(i=0;i<5;i++) { ...
分类:
编程语言 时间:
2014-11-14 01:27:20
阅读次数:
210
一、关于块级作用域 说到JavaScript的变量作用域,与咱们平时使用的类C语言不同.例如C#中下面代码:static void Main(string[] args){ if(true) { int num = 10; } System.Console.WriteLine(num);}这段代码如...
分类:
编程语言 时间:
2014-11-11 18:54:07
阅读次数:
237
众所周知,JavaScript没有块级作用域,只有函数作用域。那就意味着定义在函数中的参数和变量在函数外部是不可见的,而在一个函数内部任何位置定义的变量,在该函数内部任何地方都可见。这带来的好处是内部函数可以访问定义它们的外部函数的参数和变量。首先,我们来构造一个简单的对象。 1 var testO...
分类:
编程语言 时间:
2014-11-10 15:27:11
阅读次数:
243
在学习JavaScript的变量作用域之前,我们应当明确几点:JavaScript的变量作用域是基于其特有的作用域链的。JavaScript没有块级作用域。咸宁市中心小学函数中声明的变量在整个函数中都有定义。1、JavaScript的作用域链首先看下下面这段代码:观察alert(rain);这句代码...
分类:
编程语言 时间:
2014-11-03 20:49:45
阅读次数:
236
1、1 if (!("a" in window)) {2 var a = 1;3 }4 alert(a);阅读代码:如果window不包含属性a,就声明一个变量a,然后赋值为1,最后弹出这个变量的值。理解代码:javascript没有块级作用域,所以var a=1;定义的a是全局的,又因为全...
分类:
编程语言 时间:
2014-11-02 00:24:11
阅读次数:
238
在JS中,是没有块级作用域的
举两个个例子:
if语句块:
if (true){
var name='Ling';
}
alert(name);
输出:Ling...
分类:
编程语言 时间:
2014-10-30 17:02:04
阅读次数:
160
一、首先是最常见的闭包 (Closure) 范式自执行函数的写法,这里用匿名函数封装(构造块级作用域),避免了匿名函数内部的代码与外部之间发生冲突(如使用了相同的变量名).1 (function() {// ...})(); 二、自执行函数和其他函数类似,都可以传入参数:jQuery源码中将w...
由于javascript没有块级作用域的概念,所以在块语句中定义的变量,实际上是在包含函数中而非语句中创建的。
如:
function outputNumbers(count){
for(var i=0; i< count; i++){
alert(i);
}
alert(i);
}
这个函数中定义了一个for循环,而变量 i 的初始值被设置为0。在J...
分类:
编程语言 时间:
2014-10-29 13:03:35
阅读次数:
174
varfoo=1;functionbar(){if(!foo){varfoo=10;}alert(foo);}bar();//解释:js没有块级作用域,if switch while等不会有块级作用域如果你对foo的值实际上为"10"而感到诧异的话,再看一下下面这个例子:vara=1;functio...
分类:
编程语言 时间:
2014-10-28 13:47:41
阅读次数:
203
1.作用域(scope):在javascript没有块级作用域,是由函数来划分的。变量和函数的作用域是在定义时决定而不是执行时决定,也就是说词法作用域取决于源码,通过静态分析就能确定,因此词法作用域也叫做静态作用域(with和eval除外)。当定义了一个函数,当前的作用域链就保存起来,并且成为函数的...
分类:
其他好文 时间:
2014-10-28 11:57:58
阅读次数:
157