es6-块级作用域let 和 var的区别

本文探讨了JavaScript中变量提升现象及其背后的作用域机制。通过具体示例展示了var声明的特性,以及它如何影响代码执行过程中的变量可见性和值。

 

块级绑定

 

js的处理机制和我们大家想象的完全不同,并不完全是所谓函数调用以及上下执行那样简单,它是存有”域”的本质区别的。

 

var具有全局污染特性,所以es6才会出现let 、const。

 

下面通过一些实例来给大家解释一下:

 

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 
 4 <head>
 5     <meta charset="UTF-8">
 6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 7     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 8     <title>Document</title>
 9 </head>
10 
11 <body>
12 
13     <!--
14 undefined和null的区别?
15 
16 undefiend是定义了未赋值,而null是未定义
17 -->
18 </body>
19 <script>
20     // 我们所认识的
21     function getValue(any) {
22 
23         if (any) {
24             var val = 'blue';
25             // 其他代码
26             return val;
27         } else {
28 
29             console.log(val)
30                 // value值可以在此访问,值为undefined
31             return null;
32         }
33         // value值在此处也可以访问,值为undefined
34     }
35 
36     getValue();
37 
38     // Js引擎所认识的
39     function getValues(anys) {
40 
41         var val;
42 
43         if (anys) {
44             val = 'blue';
45             // 其它代码
46             return value;
47         } else {
48             return null;
49         }
50     }
51 
52     // 我们以为的var的作用域只限于那一块作用域内,实际上它已经跨越了“{}”界限。
53     // val变量的声明被提升到了函数顶部,初始化工作区域还保留在原区域。
54     // val变量也是可访问的,此处它的值会是undefined,因为它没有被初始化。
55 </script>
56 
57 </html>

 


转载于:https://www.cnblogs.com/cisum/p/7744099.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值