银行前端面试高频基础问题——var、let和const到底有哪些区别?讲不清楚当场发感谢信!?

银行前端面试高频基础问题——var、let和const到底有哪些区别?讲不清楚当场发感谢信!?

  • 面试官:知道const、let和var吧,说说他们的区别吧

  • 我:… …

前言

可以说这是银行我们面试遇到的最高频的一个问题,也是一个很基础的问题了。所以,我们定然在这个问题上,不能讲不清楚,那就当场发感谢信了。当然,除此之外深入的还需要去了解一下const和let的实现原理。

let

let 关键字用来声明变量,使用 let 声明的变量有几个特点:

  1. 不允许重复声明
  2. 块儿级作用域(局部变量)
  3. 不存在变量提升
  4. 不影响作用域链
示例
// let关键字使用示例:
let a; // 单个声明
let b,c,d; // 批量声明
let e = 100 ; // 单个声明并赋值
let f = 521 , g = 'iloveyou', h = []; // 批量声明并赋值
不允许重复声明
let dog = "狗";
let dog = "狗";
// 报错:Uncaught SyntaxError: Identifier 'dog' has already been
declared
块儿级作用域(局部变量)
{
let cat = "猫";
console.log(cat);
}
console.log(cat);
// 报错:Uncaught ReferenceError: cat is not defined
不存在变量提升
// 什么是变量提升:就是在变量创建之前使用(比如输出:输出的是默认值),let不存在,var存在;

console.log(people1); // 可输出默认值
console.log(people2); // 报错:Uncaught ReferenceError: people2 is not defined
var people1 = "大哥"; // 存在变量提升
let people2 = "二哥"; // 不存在变量提升
不影响作用域链:
// 什么是作用域链:很简单,就是代码块内有代码块,跟常规编程语言一样,上级代码块中的局部变量下级可用
		{
            let p = "大哥";
			var s;               //p的作用域是块(花括号内)级的,而s的作用域为函数作用域全局
            function fn() {
                console.log(p); // 这里是可以使用的
            }
            fn();
        }
应用场景

以后声明变量使用 let 就对了

let案例:点击div更改颜色
 // 获取div元素对象
        let items = document.getElementsByClassName('item');

        //ES5错误解法
        for (var i = 0; i < items.length; i++) {
           
  • 16
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值