“Let”的版本间的差异

来自姬鸿昌的知识库
跳到导航 跳到搜索
第25行: 第25行:
 
     </script>
 
     </script>
 
</syntaxhighlight>上面代码运行就不会输出张三,依浏览器不同、浏览器版本不同,控制台要么报错、要么输出空。
 
</syntaxhighlight>上面代码运行就不会输出张三,依浏览器不同、浏览器版本不同,控制台要么报错、要么输出空。
 +
 +
如果换成 var:<syntaxhighlight lang="javascript">
 +
    <script>
 +
        {
 +
            var name = '张三';
 +
        }
 +
        console.log(name);
 +
    </script>
 +
</syntaxhighlight>就能正常输出了,这是因为 var 没有块级作用域,var 声明的属性会被添加到全局的属性 window 中,所以在外面就能读取到它,
 +
 +
但 let 就不行了,因为是块级作用域,就只能在代码块里有效,所以在块外就读取不到了。

2024年7月31日 (三) 14:34的版本

let 有几个特点:

1.变量不能重复声明

    <script>
        let name = '张三';
        let name = '李四';
    </script>

运行会在控制台报错 这一点和 var 不同

    <script>
        var name = '张三';
        var name = '李四';
    </script>

上面使用 var 的代码就可以正常运行。

2.块级作用域 全局,函数,eval

let 声明的变量只在代码块里有效,出代码块就无效了,就读取不到了

    <script>
        {
            let name = '张三';
        }
        console.log(name);
    </script>

上面代码运行就不会输出张三,依浏览器不同、浏览器版本不同,控制台要么报错、要么输出空。 如果换成 var:

    <script>
        {
            var name = '张三';
        }
        console.log(name);
    </script>

就能正常输出了,这是因为 var 没有块级作用域,var 声明的属性会被添加到全局的属性 window 中,所以在外面就能读取到它,

但 let 就不行了,因为是块级作用域,就只能在代码块里有效,所以在块外就读取不到了。