js【详解】声明常量和变量 const let var

声明常量 const

  • 声明常量时,必须赋值!
  • 声明的常量赋值后,不能修改(运行时会报错)
  • ES6 新增语法
  • 有块级作用域
const webName = 'EC编程俱乐部'

常量不可变的本质

常量赋值值类型数据后,不能再赋其他值,但若其初始值是一个对象,可以修改对象的属性,但不能赋值为其他对象;若其初始值是一个数组,可以添加和修改数组中的元素,但不能赋值为其他数组,所以真正不可变的是常量中存储的地址!

声明变量 let var

let a = 1; 
var b = 2;
  • let 为 ES6 新增语法,有块级作用域
  • var 为 ES5 的语法,会导致变量提升,已不推荐使用
  • 声明变量时,可以只声明,不赋值,此时变量的值为 undefined (未定义)
  • 变量必须先声明,后使用,否则会报错——变量未定义。
  • 同一作用域中,变量名称不能相同。

全局变量

在全局作用域({} 和函数外)中声明的变量即全局变量,尽量减少全局变量的数量,以避免命名冲突。

在浏览器中

  • var 声明的全局变量都是 window 的属性
  • var 声明的全局变量还能用 this 访问,如 this.a

变量的命名规则

  • 字母、下划线或$开头
  • 不能是关键字
  • 区分大小写,
  • 长度不能超过255个字符
  • 汉语可以作为变量名。但是不建议使用,因为 low。

JavaScript 中的关键字(不用记)

abstract else instanceof switch boolean enum int synchronized break export interface this byte extends long throw case FALSE native throws catch final new transient char finally null TRUE class float package try const for private typeof continue function protected var debugger goto public void default if return volatile delete implements short while do import static with double in super

判断变量是否存在

实际上是在用 typeof 测试一个变量是否已经被初始化(或者说测试变量值是否为 undefined )。

if (typeof somevar === "undefined") {
   console.log("不存在变量somevar");
}else{
   console.log("存在变量somevar");
}

【面试题】什么是变量提升?

在执行 js 代码时,会先将所有 var 定义的变量赋值为 undefined(相当于提升到代码最前面执行) ,即便在使用 var 定义的变量之前并未定义变量,也不会报错

console.log(a); // 打印 undefined
var a = 1;

自测题 – 变量提升

// 声明全局变量 a,并赋值 123
var a = 123;

function f() {
  // 因 var 变量提升的特性,此时打印的 a 是函数作用域内的局部变量 a 
  console.log(a); //打印结果:undefined
  // 函数作用域内声明局部变量 a (虽和全局变量 a 的名称相同,但却是不同的变量!),并赋值 1
  var a = 1;
  // 打印函数作用域内的局部变量 a
  console.log(a); //打印结果:1
}

f();

// 打印全局变量 a
console.log(a); //打印结果:123

【面试题】var 和 let const 的区别

  • var 是 ES5 语法,会导致变量提升,let 和 const 是 ES6 语法
  • var 和 let 用于声明变量,可修改; const 用于声明常量,不可修改;
  • let 和 const 有块级作用域,var 没有
  • 21
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

朝阳39

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值