【你问我答】let var const有什么有什么区别?

问题描述:

let var const有什么有什么区别?

回答有奖:

选取一位认真回答问题的牛友,赠送200牛币!
▶回答尽量有自己的思考,不要单纯的只是复制粘贴定理定义,或者他人blog哦~

你问我答问题汇总:点击进入
关注你问我答栏目:点击关注

你问我答 - 答问题,成大佬,拿牛币!
你问我答是牛客新栏目,每周1期几个面试中真实遇到的问题,
牛友在问题贴下留下自己的知识,经验与见解,
帮助更多牛友了解更多技术相关知识!

#悬赏##前端工程师##面试题目#
全部评论
1.var (1)var定义的变量在之后可以修改,如果不初始化会输出 undefined,不会报错。 (2)var定义的变量,可以跨块访问, 不能跨函数访问。 (3)var只有函数作用域,没有块级作用域。 (4)var的作用域是函数作用域,var可以用来声明全局变量,也可以声明局部变量。在一个函数内利用var声明一个变量,则这个变量只在这个函数内有效。     全局变量:在函数外定义的变量,作用域是整个代码文件。     局部变量:在函数内定义的变量,作用域是当前的函数内部。 (5)可以重复定义,后面的值会覆盖前面的。 2. let (1)let是块级作用域,函数内部使用let定义后,对函数外部无影响。 (2)不存在变量声明提前,否则会报错。 (3)let定义的变量,只能在块作用域里访问,不能跨块访问,也不能跨函数访问。 (4)不能重复定义,否则会报错。 3. const (1)const定义的变量不可以修改,而且必须初始化。 (2)const一般用来声明常量,且声明的常量是不允许改变的,为只读属性,因此就要在声明的同时赋值。 (3)const与let一样,都是块级作用域,只能在块作用域里访问,存在暂时性死区,不存在变量声明提前,不允许重复定义。
1 回复
分享
发布于 2020-03-29 10:18
1,什么时候提出的? var是ES5提出的,let和const是ES6提出的。 2,是否存在变量提升? var声明的变量存在变量提升(将变量提升到当前作用域的顶部)。即变量可以在声明之前调用,值为undefined。let和const不存在变量提升。即它们所声明的变量一定要在声明后使用,否则报ReferenceError错。 3,是否存在暂时性死区? let和const存在暂时性死区。即只要块级作用域内存在let命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响。在代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”(temporal dead zone,简称 TDZ)。总之,暂时性死区的本质就是,只要一进入当前作用域,所要使用的变量就已经存在了,但是不可获取,只有等到声明变量的那一行代码出现,才可以获取和使用该变量。 4,同一作用域下是否允许重复声明变量? 同一作用域下var允许重复声明变量。let和const在同一作用域不允许重复声明变量。 5,是否存在块级作用域? var不存在块级作用域。let和const存在块级作用域。 块作用域由 { } 包括,if语句和for语句里面的{ }也属于块作用域。 6,是否能修改声明的变量? var和let可以。const声明一个只读的常量。一旦声明,常量的值就不能改变。const声明的变量不得改变值,这意味着,const一旦声明变量,就必须立即初始化,不能留到以后赋值。
点赞 回复
分享
发布于 2020-03-24 12:00
联想
校招火热招聘中
官网直投

相关推荐

点赞 1 评论
分享
牛客网
牛客企业服务