没别的意思,只是记下来而已,这在犀牛书上是明明白白地写着的。
<script>
for(var i = 0; i < 10; i++){
var a = i;
}
alert(a);//alert 9,而不是undefined,或报错,a被注册到全局变量里去了
</script>
稍微加深一下
<script>
try{
alert(abcde);
}catch(e){
alert(e);
}//报错
try{
alert(a);
}catch(e){
alert(e);
}//alert undefined,而不是报错,原因同上
for(var i = 0; i < 10; i++){
var a = i;
}
</script>
再来1个
<script>
var s=2;
function test(){
alert(s);//undefined
var s=1;
alert(a);//undefined
if(s===3){
var a=2;
}
alert(a);//undefined
}
test();
alert(s)//2,从全局变量中寻找s
</script>
上例中的test()相当于
function test(){
var s;
var a;
alert(s);
s=1;
alert(a);
if(s===3){
a=2;
}
alert(a);
}
分享到:
相关推荐
JavaScript 还没有块级作用域,这意味着在 if 语句、for 循环、while 循环等语句块中定义的变量,在整个函数体内都是可见的,而不是只在语句块中可见。 在 JavaScript 中,函数中声明的变量在整个函数中都有定义。...
JavaScript的作用域是基于函数而不是块(block)来划分的。这意味着即使在一个`if`语句或循环体内声明的变量,其作用域也将扩展到整个函数内部,而不是仅限于该块语句内。 **示例代码**: ```javascript var foo = ...
局部作用域则限定在特定代码块,如函数内部。在函数内部定义的变量只有在该函数内部可以访问,外部无法直接访问。这样的设计有助于防止变量污染全局空间,提高代码的可维护性和性能。 作用域链是JavaScript中另一个...
块作用域是由一对花括号{}包裹的代码块,使用let和const声明的变量具有块作用域。这些变量仅在定义它们的代码块内有效,出了代码块就无法访问,这增加了代码的安全性并减少了全局变量的使用。在ES6之前,JavaScript...
一个函数的词法作用域是由其声明时的位置决定的,包括全局作用域、函数作用域和块作用域。词法作用域的查找顺序是从内部向外部,直到找到第一个匹配的标识符为止。 在词法作用域中,变量的查找是根据函数的声明位置...
JavaScript作用域是编程中至关重要的概念,它定义了变量、函数和对象的可见性和生命周期。在JavaScript中,作用域主要分为两种类型:全局作用域和局部作用域。此外,随着ES6的引入,块级作用域和函数作用域也变得...
3. **块级作用域**:在ES6之前,JavaScript没有块级作用域,但ES6引入了`let`关键字,使得变量能够在特定代码块(如`if`、`for`或`while`语句内)中定义并保持其作用域限制。 - 示例: ```javascript function ...
在ES6之前,JavaScript并没有真正的块级作用域,但ES6引入了`let`和`const`关键字,使得在`if`语句、`for`循环等代码块内可以创建块级作用域。这解决了过去使用`var`声明变量时可能出现的意外变量提升问题。 四、...
### JS的作用域与闭包 #### 一、作用域的基础概念 作用域是JavaScript中一个非常核心的概念,它定义了变量的可见性和生命周期。在学习作用域之前,我们需要先了解几个基本概念: - **变量**: 在JavaScript中,...
JavaScript 是一种广泛使用的编程语言,它在早期版本中没有实现块级作用域(block scope),这是它与其他许多编程语言的一个显著区别。在 JavaScript 中,变量的作用域是由函数定义的,即使在块级结构比如循环或条件...
4. **块作用域**:某些语言(如JavaScript)支持在特定代码块(如if语句或for循环)内定义对象。这些对象仅在该代码块内可见,块结束后就会消失。 5. **静态作用域**:静态作用域(也称为词法作用域)是指对象的...
在JavaScript编程中,作用域和作用域链是影响程序性能的关键因素之一。优化作用域链是提高JavaScript代码执行效率的重要手段。下面我们从多个方面来详细探讨作用域链的概念、作用域链的层级关系、变量访问的性能影响...
js代码-块作用域(单纯的块作用域和函数块作用域)
当尝试访问一个变量时,JavaScript会首先在当前作用域查找,如果没有找到,会向上遍历作用域链,直至找到全局作用域。如果全局作用域仍未找到,就会抛出`ReferenceError`。 举个例子: ```javascript var a = 1; ...
《你不懂JS:作用域与闭包》这本书深入讲解了JavaScript中两个核心概念:作用域和闭包。作用域是JavaScript变量和函数定义的可见范围,它决定了代码中哪些部分可以访问特定变量。理解作用域对于编写可维护和高效的...
在像C语言这样的编程语言中,每个用花括号{}包裹的代码块都有自己的作用域,这意味着在代码块内部声明的变量只能在该代码块内部访问,外部是无法访问的。这种局部性使得变量的使用非常安全,避免了全局污染问题。...
前面的话 大多数时候,我们对作用域产生混乱的主要原因是分不清楚应该按照函数位置的嵌套顺序,还是按照函数的调用顺序进行... 简单地说,词法作用域就是定义在词法阶段的作用域,是由写代码时将变量和块作用域写在
在ES6之前,JavaScript没有块级作用域,但ES6引入了`let`关键字,允许在块级结构(如`if`、`for`循环等)中定义变量,这些变量仅在其所在的块内可见,解决了`var`可能导致的一些问题,如变量提升。 **函数作用域**...
3. **块级作用域**:在ES6之前,JavaScript没有真正的块级作用域,但`let`和`const`的引入改变了这一情况。这些变量在`{}`大括号内的代码块中声明,只在该块内有效,不会污染全局空间。块级作用域可以避免变量提升...