JavaScript基础 var let const的区别

news/2024/7/10 23:16:22 标签: javascript, es6, 前端

JavaScript基础 var let const的区别

  • var let const的区别
    • var
    • let
    • const
  • 使用const let的优点
  • 为什么会变量提升
    • 什么是暂存死区

var let const的区别

var

  1. var声明的变量是具有函数作用域
  2. var声明的变量会提升(提升是指变量的声明会被拿到函数或者全局作用域的顶部)
  3. 全局作用域中使用var声明变量,该变量会变成window的属性
  4. 可以多次使用var声明同一变量
  5. 可以修改变量

let

  1. let声明的变量具有块级作用域(即花括号{}括住的)
  2. let声明的变量不会提升
  3. let在全局作用域声明变量不会变成window的属性
  4. 在一个作用域里面变量名只能用let声明一次,不能重复声明
  5. 可以修改变量

const

  1. const与let的类似,符合前四点
  2. const 声明的时候就要初始化变量
  3. const 声明之后就不能修改

使用const let的优点

  1. 有助于提升代码质量
  2. 优化性能(块级作用域比函数作用域更早结束,有可能会更早地让垃圾回收程序介入)

注意:不添加什么标识符直接给变量赋值会默认认为只给window属性赋值

为什么会变量提升

在函数执行时会有个函数执行上下文,是在函数创建的时候确定的,函数执行上下文会把函数里面的变量和方法提取出来,var 声明的变量创建并初始化undefined,function声明的方法创建初始化并赋值为可以使用的function,放在函数执行上下文顶端;所以变量会提升

什么是暂存死区

var a=1;
{
console.log(a);//这时候这里会报错,因为块作用域内a还没初始化
let a=1;
}

http://www.niftyadmin.cn/n/1319677.html

相关文章

react-native Mac环境下找不到

Mac中找不到.bash_profile则自己创建.bash_profile文件 1.启动Terminal终端工具 2.输入cd ~/ 进入当前用户的home目录 或cd /Users/YourUserName 3. 创建: touch .bash_profile 4.打开并编辑: open -e .bash_profile 5.保存关闭,其实…

AngularJS中的定时器,以及定时器的移除clear

1.相比较于JS中setTimeInterval和setTimeout,angularJS中通过interval来实现定时器的效果,通过interval来实现定时器的效果,通过timeout来实现时间延迟。 $timeout //实现的是延迟执行 $interval //实现的是定时器的效果我们分别来看这两个服…

JavaScript基础 变量

JavaScript基础 变量概念前言作用域上下文变量类型原始值和引用值原始值引用值复制值原始值复制值引用值赋值值函数传参概念 前言 这里涉及到作用域,说一下,然后上下文和作用域又容易混淆,下面解释区分一下。 作用域 这里说的作用域是词法…

javascript中defer的作用

很多人都已经把 Javascript的用的炉火纯青了,但见到defer未必就知道他是做什么用的;很多人也都遇到过这样的问题,需要直接执行别且操作DOM对象的js 总是报找不到对象的错误,原因大家也都知道就是页面还有没有加载完毕,…

发一些LINUX学习资料备用

安装mysql# yum install mysql-server 安装 apache # yum install httpd 安装 php# yum install php # yum install php-mysql 忘记MYSQL密码 killall -TERM mysqld 杀死进程 mysqld_safe --skip-grant-tables & 打开安全模式 mysql> update mysql.user set passwordPA…

10个细节提升后台系统的用户体验

要说程序员最开心的事情是什么,不是钱多活少离家近,而是能用自己喜欢的技术,做一个排期不紧的舒坦项目。最近我就接手了这样一个项目,使用了webpackvue全家桶,以及其他一些业界前沿技术。不过今天不聊技术方面&#xf…

javaScript基础 */yield模拟async/await

javaScript基础- */yield模拟async/awaitasync执行模块async function _async(promiseFunc) {/*高阶函数只是为了不让他立即执行*/return function () {/*这是核心模块*/return new Promise((resolve, reject) > {/*获取迭代器*/const generator promiseFunc()/*替开发者执…

React性能提升

了解react如何提升性能将有助于我们更好的编写代码。个人认为react中很多的性能优化,其实都是围绕着react的核心diff算法来展开的,通过优化,减少diff算法中一些不必要的步骤,从而来提高性能。下面是我平时开发总结出来的一些经验。…