// 显式声明
var str = \\\'test\\\'
// 隐式声明
num = 100
如果变量没有声明过,则先声明变量并立即赋值; 如果变量已经声明过,则该语句是赋值语句;
逻辑作用域「变量的使用范围」 数据生存周期「内存中变量的创建、存活、销毁」 数据的可写性「是否可更改」
显示数据声明的语句 var、let、const、函数声明、类声明; 数种 for 语句、try…catch语句、赋值语句; 函数调用、new 运算符等语法的形式传参;
var 声明的变量,它的作用域是「当前函数、模块、全局」;而 let 声明的变量,作用域是在当前「代码块」,就是语句块。 在同一块代码里,var 可以多次声明变量名,在语法分析中与声明一次没有区别,后声明的会覆盖之前声明的变量,而 let 只能声明一次,用 let 去覆盖已经声明的变量会导致语法错误; 我们可以在 var 声明之前就使用其变量,因为变量会提升至代码块的最顶端,这个时候 var 声明的变量值为 undefined ,而我们使用 let 声明的变量,必须先声明后使用,let 声明之前就使用会触发异常,名词是「暂时性死区」
再另外,常量声明 const 和类声明 class 在块级作用域上的特征与 let 声明是一致的。
var code = ‘javascript’
相当于
window.code = ‘javascript’
原创文章,作者:小道研究,如若转载,请注明出处:https://www.sudun.com/ask/34493.html