`

JavaScript没有块级作用域

    博客分类:
  • js
阅读更多

JavaScript没有块级作用域经常会导致理解上的困惑。


例如:


if(true){

      var color = "blue";

}


alert(color);         // blue


这里是在一个if语句中定义了变量color,如果在C、C++或Java中,color会在if 语句执行完毕后被销毁。但在JavaScript中,if语句中的变量声明会将变量添加到当前的执行环境中(在这里是全局环境)。在使用for 语句时特别要牢记这一差异,如:


for(var i=0; i < 10; i++){


     doSomething(i);

}


alert(i);   //10

 

 

对于有块级作用域的语言来说,for语句的初始化变量的表达式所定义的变量,只会存在于循环的环境中。而对于JavaScript来说,由for语句创建的变量i即使在for循环结束之后,也依旧会存在于循环外部的执行环境中。

 

 

分享到:
评论

相关推荐

    为什么JavaScript没有块级作用域

    主要介绍了为什么JavaScript没有块级作用域的相关资料,需要的朋友可以参考下

    Javascript中的作用域及块级作用域

    b、JavaScript没有块级作用域。 c、函数中声明的变量在整个函数中都有定义。  javascript的变量作用域,与平时使用的类C语言不同,例如C#中的代码: static void Main(string[] args) { if(true) { int number=...

    JavaScript使用闭包模仿块级作用域操作示例

    JavaScript没有块级作用域的概念。这意味着在块语句中定义的变量,实际上是包含在函数中而非语句中创建的。从作用域链的角度来理解是,所有在函数内定义的变量(所有,也就是说块语句中定义的变量也包含在内)都会在这...

    解析JavaScript模仿块级作用域

    javaScript 没有块级作用域的概念。这意味着在块语句中定义的变量,实际上是在包含函数中而非语句中创建的,来看下面的例子: function outputNumbers(count){ for (var i=0; i &lt; count; i++){ alert&#40;i&#41...

    JavaScript的作用域和块级作用域概念理解

    作用域永远都是任何一门编程语言中的重中之重,因为它控制着变量与参数的...大多数类C语言都拥有块级作用域,JS却没有。请看下文demo: //C语言 #include void main() { int i=2; i--; if(i) { int j=3; } printf("%d/

    JavaScript应用实例-js块级作用域.js

    JavaScript应用实例-js块级作用域.js

    JavaScript的变量作用域深入理解

    b、JavaScript没有块级作用域。 c、函数中声明的变量在整个函数中都有定义。 1、JavaScript的作用域链 首先看下下面这段代码: 代码如下: [removed] var rain = 1; function rainman(){ var man = 2; function ...

    深入理解JavaScript中的块级作用域、私有变量与模块模式

    本文详细的介绍了JavaScript中的块级作用域、私有变量与模块模式,废话就不多说了,具体如下: 1.块级作用域(私有作用域),经常在全局作用域中被用在函数外部,从而限制向全局作用域中添加过多的变量和函数。 ...

    深入解析JavaScript中的变量作用域

    •JavaScript没有块级作用域。 •函数中声明的变量在整个函数中都有定义。 1、JavaScript的作用域链首先看下下面这段代码: 代码如下:[removed] var rain = 1; function rainman(){ var man = 2; function inner(){ ...

    JAVASCRIPT函数作用域和提前声明 分享

    一些语言如C、java都有块级作用域,即花括号内的每一段代码都具有各自的作用域,而且变量在声明它们的代码段之外是不可见的,但是javascript没有块级作用域。javascript使用函数作用域,即变量在声明它们的函数体...

    通过函数作用域和块级作用域看javascript的作用域链

    给大家分享了通过函数作用域和块级作用域看javascript的作用域链的相关知识点内容,有兴趣的朋友参考学习下。

    深入理解es6块级作用域的使用

    由于es5没有像其它类C语言一样的块级作用域,因此es6增加了let定义变量,用来创建块级作用域。 我们来看一个var定义变量的示例: function setName(){ if(condition){ var name = 'loho'; console.log(name); }...

    javascript中的变量作用域以及变量提升详细介绍

    局部变量(处于函数级别的作用域)不像其他对面对象的编程语言(比方说C++,Java等等),javascript没有块级作用域(被花括号包围的);当是,javascript有拥有函数级别的作用域,也就是说,在一个函数内定义的变量...

Global site tag (gtag.js) - Google Analytics