`
hyj1254
  • 浏览: 336916 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JS没有"块作用域"

阅读更多
   没别的意思,只是记下来而已,这在犀牛书上是明明白白地写着的。
<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);
}
0
0
分享到:
评论

相关推荐

    【JavaScript源代码】JS难点同步异步和作用域与闭包及原型和原型链详解.docx

     目录 JS三座大山同步异步同步异步区别作用域、闭包函数作用域链块作用域闭包闭包解决用var导致下标错误的问题投票机闭包两个面试题原型、原型链原型对象原型链完整原型链图 JS三座大山 同步异步同步异步区别...

    js代码-块作用域(单纯的块作用域和函数块作用域)

    js代码-块作用域(单纯的块作用域和函数块作用域)

    深入理解javascript作用域第二篇之词法作用域和动态作用域

    前面的话  大多数时候,我们对作用域产生混乱的主要原因是分不清楚应该按照函数位置的嵌套顺序,还是按照函数的调用顺序进行... 简单地说,词法作用域就是定义在词法阶段的作用域,是由写代码时将变量和块作用域写在

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

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

    05-JavaScript作用域.pdf

    讲述了webstorm ,js的作用域,分了六个部分为大家解释:一、作用域;二、全局作用域;三、局部作用域;四、块作用域;五、函数作用域;六、作用域链

    JavaScript作用域、闭包、对象与原型链概念及用法实例总结

    没有块作用域:即作用域不是以{}包围的,其作用域完成由函数来决定,因而if /for等语句中的花括号不是独立的作用域。 如前述,JS的在函数中定义的局部变量只对这个函数内部可见,称之谓函数作用域。 嵌套作用域变量...

    JavaScript中实现块作用域的方法

    //输出 12 如果按照通常的编程经验,那么alert函数是不可以访问到temp变量的,因为它在另外一个块中,但是在JavaScript中,却没有块作用域的概念,所以这种语法对JS不起作用,但是我们在写JS程序的时候,尤其是比较...

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

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

    520MianXiangDuiXiang520#Note#24-作用域与作用链1

    作用域与作用域链作用域类别全局作用域函数作用域块作用域:Es6时出现,之前没有作用域与执行上下文区别创建时机不同全局作用域外,每个函数都有自己的作用域,作用域在

    javascript中的作用域和闭包详解

    作用域划分:基于上下文,以函数进行划分的,而不是由块划分的。 强调两点: 1. 在同一作用域中,JavaScript是允许变量的重复定义,并且后一个定义将覆盖前一个定义。 2. 函数内部如果不加关键字var而定义的变量,...

    javascript中闭包概念与用法深入理解

    因为JS没有块状作用域,笔者初学JS时,在事件的监听时,因为不理解JS中局部变量的作用域,犯过不少错误! (1)JS中的变量作用域 for(var i=0;i&lt;9;i++) { } alert&#40;i&#41; //输出9 我们发现,虽然变量i是块状...

    javascript作用域和闭包使用详解

    作用域的嵌套将形成作用域链,函数的嵌套将形成闭包。闭包与作用域链是 JavaScript 区别于其它语言...不同于C等其它有块作用域的语言,这里将始终返回 2 。 全局作用域,对于浏览器来说可以理解为 window 对象(Node.js

    javascript中的作用域scope介绍

    而在javascript中,变量的作用域是按函数来划分的——变量在某个函数范围内有效。比如: 代码如下: var f = false; if(true) { var f = true; } //此时f位于if内,也就是块内,等价于还是全局范围内 alert&#40;f&#41...

    js三大山-外传-作用域链

    js没有块及作用域,除了全局作用域外,只有函数才能创建作用域。作用域最大的用处就是隔离变量,不同作用域下同名变量不会有冲突。  除了全局变量外js运行只能在相对应的作用域起作用  作用域链:作用域有上下级...

    一次让你了解全部JavaScript的作用域

    JavaScript 的作用域包括:模块作用域,函数作用域,块作用域,词法作用域和全局作用域。 全局作用域 在任何函数、块或模块范围之外定义的变量具有全局作用域。可以在程序的任意位置访问全局变量。 当启用模块系统...

    浅谈JavaScript的函数及作用域

    函数和作用域是JavaScript的重要组成部分,我们在使用JavaScript编写程序的过程中经常要用到这两部分内容,作为初学者,我经常有困惑,借助写此博文来巩固下之前学习的内容。 (一)JavaScript函数 JavaScript函数是...

    javascript从作用域链谈闭包

    在ES 6之前,Javascript只有函数作用域的概念,没有块级作用域(但catch捕获的异常 只能在catch块中访问)的概念(IIFE可以创建局部作用域)。每个函数作用域都是封闭的,即外部是访问不到函数作用域中的变量。 ...

Global site tag (gtag.js) - Google Analytics