网站开发实用技术第2版,seo优化推广专员招聘,wordpress post 与 page 区别,世界十大互联网公司文章目录 结论1、重复定义变量名var#xff1a;允许重复定义变量名let和const#xff1a;不可以重复定义变量名 2、修改值var#xff1a;允许修改值let#xff1a;允许修改值const#xff1a;不允许修改值#xff0c;会报错 3、变量提升var : 支持变量提升let和const允许重复定义变量名let和const不可以重复定义变量名 2、修改值var允许修改值let允许修改值const不允许修改值会报错 3、变量提升var : 支持变量提升let和const不支持会报错 4、作用域var : 全局变量let: 局部变量const: 声明常量不能进行修改 结论
根据实际场景使用: 最小粒度使用命令
重复定义修改值变量提升先使用后定义作用域var允许允许允许全局let-允许-局部const (常量)---
主要从
是否可以重复定义变量名是否允许修改值是否具有变量提升作用域
这四个方面来进行介绍。
1、重复定义变量名
var允许重复定义变量名 我先定义一个变量a给它附上一个初始值我们打印一下结果 之后我们对这个变量进行重复的定义再打印一下结果 发现初始值被覆盖了 所以说var是可以重复定义变量名的。 let和const不可以重复定义变量名 直接就报错了 2、修改值
var允许修改值 首先我们定义一个变量给它附上一个初始值然后对这个变量附上一个新的值。 我们打印一下这个变量的值发现这个变量的值的确被修改了 let允许修改值 const不允许修改值会报错 这是因为const所定义的变量是常量是不允许被修改的。 3、变量提升 通常先定义变量然后再去使用变量 变量提升可以让你先使用变量之后再去定义变量
var : 支持变量提升 在使用a变量之前并没有定义这个变量. 是在使用之后才进行定义的。 但是整个代码依然能够运行。 但是它的结果似乎和我们的预期不太一样它的结果是undefined。 可以理解为做了如下的处理 这就是变量提升是var所定义的变量特有的。 let和const不支持会报错 4、作用域
var : 全局变量
默认全局变量缺省的定义是全局变量
var hw hello word;
console.log(hw hw);
hwAll hello All;
console.log(hw hw);
for (var index 0; index 1; index) {var inCon inCon;console.log(index index,hw hw ,inConinCon);
}
console.log(,inConinCon); let: 局部变量
仅在方法内有效
for (let index 0; index 1; index) {let inConLet inConLet;console.log(index index,hw hw ,inConLetinConLet);
}如果不在作用域会报异常
D:\vuecode\es6\hw.js:20
console.log(,inConLetinConLet);^ReferenceError: inConLet is not definedat Object.anonymous (D:\vuecode\es6\hw.js:20:26)at Module._compile (internal/modules/cjs/loader.js:1158:30)at Object.Module._extensions..js (internal/modules/cjs/loader.js:1178:10)at Module.load (internal/modules/cjs/loader.js:1002:32)at Function.Module._load (internal/modules/cjs/loader.js:901:14)at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12)at internal/main/run_main_module.js:18:47
const: 声明常量不能进行修改
声明常量不能进行修改
for (let index 0; index 1; index) {let inConLet inConLet;console.log(index index,hw hw ,inConLetinConLet);
}如果不在作用域会报异常
TypeError: Assignment to constant variable.at Object.anonymous (D:\vuecode\es6\hw.js:25:5)at Module._compile (internal/modules/cjs/loader.js:1158:30)at Object.Module._extensions..js (internal/modules/cjs/loader.js:1178:10)at Module.load (internal/modules/cjs/loader.js:1002:32)at Function.Module._load (internal/modules/cjs/loader.js:901:14)at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12)at internal/main/run_main_module.js:18:47