JS经典面试题05-变量连续声明var a = b = 1

JS经典面试题05-变量连续声明var a = b = 1_第1张图片

  • 函数里面声明的变量是局部变量,在函数外无法被访问。 怎么会有人出这么简单的面试题呢?

1.1-答案揭晓

JS经典面试题05-变量连续声明var a = b = 1_第2张图片

1.2-原理解析

JS经典面试题05-变量连续声明var a = b = 1_第3张图片

		/*本题考点 
        a.  变量作用域 : 函数里面声明的变量是局部变量,无法在全局访问
        b.  冷门知识点 : 变量如果没有使用var关键字声明,则没有作用域限制。 一定是全局变量(不标准语法)
        */
        //声明函数
        function fn() {
            /*变量连续赋值执行原理 
            (1)   b = 1;      声明一个全局变量b,值为1. 因为这里b并没有使用var关键字所以没有作用域限制
            (2)   var a = b;  声明一个局部变量a, 值为1
            */
            var a = b = 1;
        };
        //调用函数 :执行函数体代码
        fn();
        //请说出代码结果
        console.log( b );//1
        console.log( a );//程序报错 a is not defined        

你可能感兴趣的:(JavaScript学习,Web前端开发)