关于var、let和const

var/let/const都用来声明变量,但各有区别。

使用var会弹出“3”,可见在块外,块中定义的变量i仍然是可以访问的。也就是说,使用var声明变量是不支持块级作用域,容易泄露成为全局变量。它只支持函数作用域,而且在一个函数中的任何位置定义的变量在该函数中的任何地方都是可见的。使用var可能会导致内层变量覆盖外层变量。而let只在代码块内有效。

用let将var替换后,会报错Uncaught ReferenceError: i is not defined。

使用var声明变量,在执行前会进行预解析。而let不会,它所声明的变量一定要在声明后使用,否则报错,并且let不允许在相同作用域内,重复声明同一个变量。

//------------------------------关于const------------------

const声明的变量不得改变值,这意味着,const一旦声明变量,就必须立即初始化,不能留到以后赋值,即声明不赋值,就会报错。与let一样在块级作用域内有效,不会预加载。

关于let和const更多的讲解可参见:http://es6.ruanyifeng.com/#docs/let

时间: 2024-10-10 20:48:00

关于var、let和const的相关文章

es6 - 一共有 6 种声明变量的方法(var, function, let, const, class, import)

let声明的变量只在它所在的代码块有效. 不存在变量提升 let不允许在相同作用域内,重复声明同一个变量 暂时性死区,只要块级作用域内存在let命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响, 定义之前不能使用. 应该避免在块级作用域内声明函数.如果确实需要,也应该写成函数表达式,而不是函数声明语句. for循环的计数器,就很合适使用let命令. for (let i = 0; i < 10; i++) {let i = 'abc';} // 变量i是let声明的,当

var let及const

es6已经发布很久了,之前只会用var定义变量,学习了let和const后,又学到了一些作用域.JavaScript编译和深拷贝浅拷贝的知识.这章主要来说说这三个定义量的方法: 1.var 在没学习es6时,会经常用到var,var用来定义一个变量,变量数据类型可以是基础数据类型,也可以是引用数据类型.它可以定义在全局,也可以定义在局部,但最后都会变成全局变量.并且后执行的赋值会覆盖之前的赋值,例: var name = '小黑' console.log(name) //小黑 function

js中const,var,let区别

今天面试,被问了个问题,const, var, let的区别,当时就懵圈了,var 知道,const.let 是什么鬼??? 回来一百度,找到一篇通俗易懂的介绍,先取之收藏,以备忘.主要内容是:js中三种定义变量的方式const, var, let的区别. 摘自:http://www.cnblogs.com/ksl666/p/5944718.html 1.const定义的变量不可以修改,而且必须初始化. 1 const b = 2;//正确 2 // const b;//错误,必须初始化 3 c

const,var,let笔记

js中定义变量的方式有三种const.var.let const 作用域:全局作用域或函数作用域 定义的变量不可修改,且必须初始化 eg: const a= 1; a= 2; console.log(a); //1 不可修改 const b; b= 1; console.log(b);// undefined 在定义的时候就必须初始化,否则赋值无效 var 作用域:全局作用域或函数作用域 变量可修改,定义时可不初始化 let 作用域:块作用域,即作用域在包裹其的{}或()中,对函数外边没有影响

关于var、let、const的故事

对于一门编程语言来说,变量与常量是再正常不过的两种,JavaScript是一直解释型的弱类型语言. JavaScript中变量或者常量可以用var.let.const(后两者是ES6的新特性). 1.let.const基本用法 只在声明所在的块级作用域内有效 { let a = 1; var b = 1; const c = 1; } a//Uncaught ReferenceError: a is not defined b//1 c//Uncaught ReferenceError: c i

var、let、const与JavaScript变量/常量的定义

早期的JavaScript中,声明变量只能使用var关键字定义变量,并没有定义常量的功能.通过var关键字定义的变量,其作用域只能函数级或是全局作用域,并没有块级作用域.ES6(ECMAScript 2015)对这一问题做了改善,增加了用于定义块级变量的let关键字和用于定义常量的const关键字. var定义变量 1.1 语法及说明 1.2 使用及特点 let定义块级变量 2.1 语法及说明 2.2 与var的异同 const定义常量 1. var定义变量 1.1 语法及说明 var关键字用于

var, let ,const区别

es6新增了let和const新命令,用于变量的声明,这两个和es5的var存在着差异,而且let和const也有着一些区别,既然他两是es6新增的方法那就有他们的独特之处,让我们来看看一看吧. 首先我们得先了解var的作用,var声明的变量可以改变,而且需要初始值否则会报undefined,这里存在着变量提升 ``js var a = 1; console.log(a)//a:1 function outPut(){ var a= 4; console.log(a)//a:4 } outPut

var与let、const的区别

var与let.const 一.var声明的变量会挂载在window上,而let和const声明的变量不会: var a = 100;console.log(a,window.a); // 100 100 let b = 10;console.log(b,window.b); // 10 undefined const c = 1;console.log(c,window.c); // 1 undefined 二.var声明变量存在变量提升,let和const不存在变量提升 console.lo

es64 const

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>const命令</title> <script src="../../../vendor/traceur.js"></script> <script src="../../../vendor/boo

ES6变量声明 ------ let and const

在ES5中,声明变量的方式只有一种, 那就是var, 如var mes ="hello", 但是用var声明变量有一个比较奇怪的地方,就是变量声明的提升,比如在函数中,无论我们声明变量的代码写在什么地方,它都是在函数顶部声明变量,在全局作用域下,则是在script标签顶部声明变量,这就有点郁闷了,因为按照我们正常的思维方式,我们代码是一行一行写的,只有用到某个变量的时候,才进行声明变量,并且声明变量后,只有它后面的代码才可以用,现在成了,我们在后面声明变量,在前面也可以用了,这不符合我