美文网首页
局部变量的作用域变大了,大到函数

局部变量的作用域变大了,大到函数

作者: 海边拾贝 | 来源:发表于2015-12-10 14:27 被阅读0次
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script type="text/javascript">
    function test() {
        //undefined escape from for{}
        alert(j);
        for (var i = 0; i < 3; i++) {
            var j = 1;
        }
        //escape from for{}
        alert(j);
    }
    //变量作用域,j可以逃出for{},但逃不出function
    //其他语言中,j连for{}都逃不出
    test();
    // not defined 直接报错
    alert(j);
</script>
</body>
</html>

普通对象:键值对的一个集合
函数对象:键值对的一个集合
可执行
带两个隐藏的属性(函数上下文\函数代码)

关于参数

arguments本身并不是JS的数组对象.虽然它有length属性,并可以用索引下标访问每个元素,但是它没有JS数组对象那么多方法(如slice concat).若想在arguments上使用JS数组对象的方法,需要借用数组的方法:
var newArgs=Array.prototype.slice.apply(arguments);
这时候返回的newArgs就是slice增强版arguments
apply()对参数对象进行增强并返回新的参数对象

第一次alert(j)这个时候js已经感知到j的定义,但j没有赋值,所以是undefined
可以认为function把所有的var声明提前到靠近function的开始位置
第二次alert(j)已经赋值了
第三次alert(j)是在function外,局部变量是逃不出function的,所以报错
其次,i和j的作用域是一样的

相关文章

  • 局部变量的作用域变大了,大到函数

    普通对象:键值对的一个集合函数对象:键值对的一个集合可执行带两个隐藏的属性(函数上下文\函数代码) 关于参数 ar...

  • JS高级知识点汇总

    1.作用域 局部作用域:函数内部就是局部作用域。 ①在局部作用域申明的变量称为局部变量,局部变量只能在当前函数内部...

  • C语言之内存讲解

    1 内存讲解 1.1 作用域 C语言变量的作用域分为:代码块、函数、文件作用域: 1.1.1 局部变量 局部变量(...

  • Scope

    1. 全局作用域 全局变量拥有全局作用域 2. 函数作用域 在函数内声明的变量用于函数作用域。在函数体内,局部变量...

  • 复习

    复习 函数作用域 全局作用域 局部作用域 块级作用域(es6-let,const) 优先级局部变量(函数体内声明的...

  • html5+es6

    复习 函数作用域 全局作用域 局部作用域 块级作用域(es6-let,const) 优先级局部变量(函数体内声明的...

  • 函数作用域以及作用域链

    变量作用域 在JS中区分函数作用域时主要区分为函数内部定义变量(局部变量)和函数外部定义变量(全局变量) 局部变量...

  • 2018-01-24 Python闭包的概念

    作用域 作用域是程序运行时变量可被访问的范围,定义在函数内的变量是局部变量,局部变量的作用范围只能是函数内部范围内...

  • js闭包

    1. 变量作用域 变量作用域两种:全局变量、局部变量。 全局变量:函数外声明的变量,称为全局变量 局部变量:函数...

  • 第2模块第1章21函数—作用域

    作用域 在Python中函数就是一个作用域,局部变量放置在其作用域中 C Java中作用域{}已经生成,作用域向上...

网友评论

      本文标题:局部变量的作用域变大了,大到函数

      本文链接:https://www.haomeiwen.com/subject/rdkyhttx.html