We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
三者都是js中定义变量的关键字。其中 let;const是es6中新增的方式
let;const是es6中新增的方式
使用var来定义变量在es6之前是唯一的办法。但是var也有一些弊端
从js设计时开始,浏览器内的顶层对象就等于window。这就诞生了一个问题: 全局的执行上下文就是 顶层对象(window)。所以在全局使用 var来定义变量时 就是在window上添加属性。在es6之后,开发者为了解决这一问题。引入了 let;const
var
let;const
var会存在变量提升。在ECMA对此的描述时(看过文档后的口述):代码编译阶段时会把执行上下文里所有使用var声明的变量全部做以下处理:
undefined
有两种情况。第一种:只声明变量,不赋值。🌰:
// var a var a a = undefined
第二种:声明变量和赋值。🌰:
// var a = 10 var a a = undefined a = 10
let 相比于var 它不会在window内出现,也就是不挂载到全局的执行上下文内。let;const会创建在块级作用域里,存在暂时性死区。也就是声明之前不可访问
let定义变量的过程和var是差不多的。差别在于:代码编译阶段只做了 变量标识符的创建。变量的初始化;变量的赋值这两步放在了赋值阶段在执行
let
变量的初始化;变量的赋值
const和上面的let规则一样,但是const必须要有初始值,而且同一变量只能声明一次
// ok ✅ let num // error ❌ const num
The text was updated successfully, but these errors were encountered:
No branches or pull requests
三者都是js中定义变量的关键字。其中
let;const是es6中新增的方式
在变量定义时有三个阶段:变量标识符的创建;变量的初始化;变量的赋值
var
使用var来定义变量在es6之前是唯一的办法。但是var也有一些弊端
从js设计时开始,浏览器内的顶层对象就等于window。这就诞生了一个问题: 全局的执行上下文就是 顶层对象(window)。所以在全局使用
var
来定义变量时 就是在window上添加属性。在es6之后,开发者为了解决这一问题。引入了let;const
var会存在变量提升。在ECMA对此的描述时(看过文档后的口述):代码编译阶段时会把执行上下文里所有使用
var
声明的变量全部做以下处理:当你创建了一个变量,变量标识符初始化后,如果没有为此赋值,var会将该变量初始化
undefined
。如果有赋值,var会先将该变量初始化为undefined
,随后在赋值给正确的值有两种情况。第一种:只声明变量,不赋值。🌰:
第二种:声明变量和赋值。🌰:
let
let 相比于var 它不会在window内出现,也就是不挂载到全局的执行上下文内。
let;const
会创建在块级作用域里,存在暂时性死区。也就是声明之前不可访问let
定义变量的过程和var
是差不多的。差别在于:代码编译阶段只做了 变量标识符的创建。变量的初始化;变量的赋值
这两步放在了赋值阶段在执行const
const和上面的let规则一样,但是const必须要有初始值,而且同一变量只能声明一次
The text was updated successfully, but these errors were encountered: