`
_wyh
  • 浏览: 61067 次
社区版块
存档分类
最新评论

let和var的区别

    博客分类:
  • js
 
阅读更多

 

let 声明了一个块级域的局部变量,并且可以给它一个初始化值。

 

 

1,let和var的作用域不同:

let 允许把变量的作用域限制在块级域中。

 

var 申明变量要么是全局的,要么是函数级的,而无法是块级的。

 

function test() {
  var x = 2;
  if (true) {
    var x = 1;  
    console.log(x);  
  }
  console.log(x);  
}

 结果为:

 

 

1
1

 因为var的作用域是函数级,所以if大括号里的var x = 1给x赋予了新值。下面的输出也为新值。

 

function test() {
  let x = 2;
  if (true) {
    let x = 1;  
    console.log(x);  
  }
  console.log(x);  
}

结果为:

1
2

  let作用域是块级别的,if里面的let x = 1为一个新变量,if结束之后消失,与上面的x无关,所以输出依然是2.

 

 

2,let 有暂存死区

function test() {
   var x;
   var x;
}
//不会发生错误

 

function test() {
   let x;
   let x;
}
//会引起TypeError异常

    因为在 ECMAScript  2015中,  let 将会提升这个变量到语句块的顶部。然而,在这个语句块中,在变量声明之前引用这个变量会导致一个 ReferenceError的结果, 因为let变量 在"暂存死区" (从块的开始到声明这段).

 

 

3,let与var对比

var a = 5;
var b = 10;

if (a === 5) {
  let a = 4;
  var b = 1;

  console.log(a);  
  console.log(b);  
} 

console.log(a); 
console.log(b); 

 结果为:

4
1
5
1
//因为var和let作用域不同,if大括号内的let a在大括号结束后消失,而b为var,作用域是函数,所以为1

 

 

分享到:
评论

相关推荐

    es6 for循环中let和var区别详解

    let和var区别: for(var i=0;i<5 xss=removed>{ console.log(i);//5个5 },100) } console.log(i);//5 console.log('=============') for(let j=0;j<5 xss=removed>{ console.log(j);//0,1,2,3,4 },100) } ...

    js中let和var定义变量的区别

    在JavaScript编程语言中,`let` 和 `var` 都是用来声明变量的关键字,但它们在作用域、提升(Hoisting)以及重复声明等方面存在显著差异。这些差异在JavaScript的严格模式('use strict')下更为明显。 首先,`var`...

    JavaScript ES6中const、let与var的对比详解

    本文将详细介绍const、let和var的用法、作用域、变量提升、初始化以及重复声明等方面的区别。 首先,var关键字是早期JavaScript中唯一的变量声明方式。它存在一些问题,比如变量提升和全局变量污染。变量提升意味着...

    js代码-let和var在for循环中简单区别

    本文将深入探讨在for循环中`let`和`var`的区别,以及它们如何影响代码的运行和作用域。 首先,我们来看`var`。在ES5及更早版本中,`var`是声明变量的唯一方式。`var`声明的变量具有函数作用域,这意味着变量在函数...

    了解javascript中let和var及const关键字的区别

    在JavaScript编程语言中,`let`、`var`和`const`都是用于声明变量的关键字,但它们在使用和行为上存在显著的区别。下面将详细解释这些差异。 1. **声明后未赋值的表现** 不论是`let`、`var`还是`const`,在声明但...

    js代码-let 和 var 在for循环里的区别

    在JavaScript编程语言中,`let` 和 `var` 都是用来声明变量的关键字,但它们在作用域和可重声明性方面存在显著的区别,尤其是在for循环中体现得尤为明显。理解这些差异对于编写高效且无错误的代码至关重要。 首先,...

    简述ES6新增关键字let与var的区别

    下面先让我们看看它和 var 之间用法的不同  {  var a = 10;  let b = 8;  } a //10 b // Referenceerror :b is not defined 上面在代码块中声明了两个变量并分别赋值输出到控制台,结果a的变量成功输出,b的...

    javascript 的var、let、const的区别.pdf

    JavaScript 中的 var、let、const 的区别 JavaScript 中的变量声明方式有多种,包括 var、let 和 const。这三种方式都可以用来声明变量,但它们之间有一些关键的区别。 var 声明 在 JavaScript 中,使用 var ...

    varlet-dev.zip

    1. **前端框架/库**:如果"varlet"是一个前端框架或库,那么"varlet-dev"可能包含了框架的核心代码、样式表、JavaScript文件、以及用于开发和测试的额外文件。开发者可以利用这些文件来构建响应式、交互式的Web页面...

    前端大厂最新面试题-var_let_const.docx

    var、let、const是JavaScript中用来声明变量的三种方式,它们之间有很多区别,了解这些区别是非常重要的。 一、var var是JavaScript中最古老的声明变量的方式,在ES5中,var声明的变量既是全局变量也是顶层变量。...

    jQuery中的for循环var与let的区别

    这里我们将深入探讨`var`和`let`的区别,并通过一个具体的jQuery AJAX请求示例来说明它们在多层异步操作中的差异。 首先,`var` 是ES5及更早版本中的变量声明方式,它的特点是变量作用域为函数作用域或全局作用域。...

    varlet-ui-dev.zip

    由 varletjs 社区团队精心打造和维护,Varlet UI 充分利用了 Vue3 的新特性,确保了高效性能和易用性。 ### 一、Vue3 的核心特性与 Varlet UI 结合 1. **Composition API**:Vue3 引入了 Composition API,使得...

    2021-1-27 let_var_const.zip

    `let`、`var`和`const`是三种不同的变量声明关键字,每种都有其特定的用途和规则。在2021-1-27的"let_var_const.zip"文件中,我们可以看到这些关键词的实现,涉及到了编译器和解释器的工作原理。以下是关于这些知识...

    JavaScript中const、var和let区别浅析

    在JavaScript中有三种声明变量的方式:var、let、const。但是有朋友不清楚这三种声明变量的区别,下面脚本之家小编给大家详细介绍下js中const、var和let的区别,感兴趣的朋友一起看看吧

    面试官竟然问我JavaScript中var、let和const有什么区别这样简单的问题?

    在JavaScript编程语言中,声明变量有三种主要方式:var、let和const。这些关键字各具特点,理解它们之间的差异对于编写高效、可维护的代码至关重要。 1. var var 是 JavaScript 中较早引入的变量声明方式。它具有...

    varlet-vite-app:基于Vite和Varlet的移动端项目模板

    基于Varlet的移动端应用模板 特性 自动配置路由 如下目录结构 src/ views/ home/ index.vue meta.js 会自动转成 import meta from '../views/home/meta.js' const routes = [ { path: '/home', component: ...

Global site tag (gtag.js) - Google Analytics