这是我参与「第四届青训营 」笔记创作活动的第2天
1、let声明
定义变量 let 标识符;
(1)let变量不可重复声明
let name='zxt'
let name='ljx'
这时就会显示错误(如下图)
但是对于var来说却可以重新定义
var name='jxj'
var name='lxy'
此时没有任何问题
(2)let为块级作用域
{
let sex='男'
}
console.log(sex)
此时的结果如下图所示:
但是对于var声明变量来说却没有
{
var sex='男'
}
console.log(sex)
(3)let不存在变量提升
console.log(sex)
let sex = '男'
此时就会报错
但是对于var来说,具有变量提升,虽然不会报错,但是会显示undefined
console.log(sex)
var sex = '男'
此时的结果如下图所示:
(4)虽然let声明变量是块级作用域,但是并不会影响作用链的效果
let age = 20
let information=function(){
return age
}
information()
2、const 定义常量
const 标识符
(1)定义常量一定要赋初值
如果不赋初始值的时候就会报错
'const' declarations must be initialized.
(2)定义常量的时候,标识符一般会全大写(3)常量值不可修改
如果修改之后就会报错 Cannot redeclare block-scoped variable 'age'.
const age=21
const age=21
但是对于数组和对象的元素进行修改,不算是对常量进行修改
举个数组例子
const information=['sex','age']
information.push('name')
此时不会报错 再举一个对象的例子
const obj={
sex:'男',
age:20
}
obj.age=21
console.log(obj)
此时的结果如图所示
(4)也是块级作用域