面试官竟然问我JavaScript中varlet和const有什么区别?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试官竟然问我JavaScript中varlet和const有什么区别?相关的知识,希望对你有一定的参考价值。

javascript中有三种声明变量的方式:var、let、const。

目录
1.var

  1. let
  2. const
    1.var
    (1)var定义的变量在之后可以修改,如果不初始化会输出undefined,不会报错。

var a;
console.log(a); // undefined
// -----------------------------
console.log(a); // undefined
var a = 1;
1
2
3
4
5
(2)var定义的变量,可以跨块访问, 不能跨函数访问。

(3)var只有函数作用域,没有块级作用域。

(4)var的作用域是函数作用域,var可以用来声明全局变量,也可以声明局部变量。在一个函数内利用var声明一个变量,则这个变量只在这个函数内有效。

全局变量:在函数外定义的变量,作用域是整个代码文件。
局部变量:在函数内定义的变量,作用域是当前的函数内部。
var a = 666;
console.log("函数外var定义a:" + a); // 函数外var定义a:666
利率决议 http://www.gendan5.com/decision/jpy.html
function cg(){
a = 888;
console.log("函数内var定义a:" + a);// 函数内var定义a:888
}

cg();
console.log("函数调用后var定义a为函数内部修改值:" + a);
// 函数调用后var定义a为函数内部修改值:888
1
2
3
4
5
6
7
8
9
10
11
(5)可以重复定义,后面的值会覆盖前面的。

var a = 1;
var a = 2;
console.log(a); // 2
1
2
3

  1. let
    (1)let是块级作用域,函数内部使用let定义后,对函数外部无影响。

let a = 666;
console.log("函数外let 定义a:" + a); // 函数外let 定义a:666

function cg(){
let a = 888;
console.log("函数内let 定义a:" + a);// 函数内let 定义a:888
}

cg();
console.log("函数调用后let 定义a为函数内部修改值:" + a);
// 函数调用后let定义a为函数内部修改值:666
1
2
3
4
5
6
7
8
9
10
11
(2)不存在变量声明提前,否则会报错。

console.log(a);
let a = 1;
1
2

(3)let定义的变量,只能在块作用域里访问,不能跨块访问,也不能跨函数访问。

var c=11;

{
let c=12;
console.log(c);// 12
}
console.log(c);// 11
1
2
3
4
5
6
(4)不能重复定义,否则会报错。

let a = 1;
let a = 2;
console.log(a);
1
2
3

  1. const
    (1)const定义的变量不可以修改,而且必须初始化。

const b = 2;// 正确
const b; // 错误,必须初始化
1
2
(2)const一般用来声明常量,且声明的常量是不允许改变的,为只读属性,因此就要在声明的同时赋值。

(3)const与let一样,都是块级作用域,只能在块作用域里访问,存在暂时性死区,不存在变量声明提前,不允许重复定义。

const b = 2;
const b = 2;
console.log(b);
1
2
3

以上是关于面试官竟然问我JavaScript中varlet和const有什么区别?的主要内容,如果未能解决你的问题,请参考以下文章

原创 | 我说我了解集合类,面试官竟然问我为啥HashMap的负载因子不设置成1!?

面试官问我栈和队列的区别,我举了个例子解释,她竟然当场吐了!

Nginx面试官竟然问我Nginx如何生成缩略图,还好我看了这篇文章!!

我说我精通字符串,面试官竟然问我Java中的String有没有长度限制!?| 附视频讲解

面试官问我:一个 TCP 连接可以发多少个 HTTP 请求?我竟然回答不上来...

我说精通字符串,面试官竟然问我 Java 中的 String 有没有长度限制?