Loading... <p>在javascript中有三种声明变量的方式:var、let、const。</p><p>JS中作用域有:全局作用域、函数作用域。没有块作用域的概念。ECMAScript 6(简称ES6)中新增了块级作用域。块作用域由 { } 包括,if语句和for语句里面的{ }也属于块作用域。</p><h2>const定义的变量不可以修改,而且必须初始化。</h2><p>它和let一样,也不能重复定义同一个变量,const一旦定义,无法修改.<br>let和const属于局部变量,不会出现变量提升的情况,全局定义的let和const变量,不属于顶层变量,不属于window的属性<br>const用来定义常量(可以是字符串,数组,函数,对象等),但他并不是不可更改的。举个例子:</p><pre><code>const c;//会产生报错. const d = 1;//正确 const arr = [1, 2]; arr.push(1);//正确 [1, 2, 1] arr[0] = 3;//正确 [3, 2, 1] arr = [];//错误TypeError: invalid assignment to const `arr' </code></pre><h2>var定义的变量可以修改,如果不初始化会输出undefined,不会报错。</h2><p>var相比let就是管的比较宽,他的值可以被内部修改。<br>var 声明全局变量,换句话理解就是,声明在for循环中的变量,跳出for循环同样可以使用。</p><pre><code>var a = 1; // var a;//不会报错 console.log('函数外var定义a:' + a);//可以输出a=1 function xx(){ a = 4; console.log('函数内var定义a:' + a);//可以输出a=4 } xx(); console.log('函数调用后var定义a为函数内部修改值:' + a);//可以输出a=4 </code></pre><h2>3.let是块级作用域,函数内部使用let定义后,对函数外部无影响。</h2><p>let是es6中新增定义,带有块级作用域,只会在所定义块生效。<br>同一个变量,不可在声明之前调用,必须先定义再使用,否则会报错,循环体中可以用let</p><pre><code>let c = 3; console.log('函数外let定义c:' + c);//输出c=3 function xx(){ let c = 6; console.log('函数内let定义c:' + c);//输出c=6 } xx(); console.log('函数调用后let定义c不受函数内部定义影响:' + c);//输出c=3</code></pre><p>let 和 const 存在“变量死区”,这点也是和 var 不同的地方。</p> 猜你想看 每日一学:PHP 中的array_key_exists函数详解 给你的博客添加每日60秒读懂世界 使用 linux go-cqhttp搭建QQ机器人 每日一学:PHP 中的 `array_uintersect` 函数详解 TS自动运行+Parcel打包 每日一学:PHP 中的array_pad函数详解 HTML5、JS使用canvas绘画 PHP发送TCP和UDP请求 Axios 实现登录拦截功能:完整代码、逻辑解析和性能优化建议 Go读写文件 最后修改:2022 年 06 月 05 日 © 允许规范转载 赞 0 如果觉得我的文章对你有用,请随意赞赏
3 条评论
太棒了,博主加V嘛
很棒很实用谢谢博主
好 太棒了