var、let、const的区别,以及作用范围。
在es5中一般经常使用的变量有两个级别,一个是用var声明的全局级别的变量,另外一个是函数级别是用var生命在函数内的。本文中将详细讲解我对es6中的const和let的区别。
let的使用以及作用范围
let是块级变量,只有在自己声明的内部才会有作用。
'use strict';
{
var a = 12;
let b = 15;
{
console.log(a, b)//12 15没有问题的。
}
}
console.log(a,b) //12 defined a是全局变量在哪里输出都没有问题,然而b是块级变量所以只有在声明b的内部才会有效。
let的提升。下列代码中证明了let没有被提升 var 被提升了。
'use strict';
function fun() {
// var a 相当于a提升到了这里定义了,但是未赋值。
console.log(a, b); //undefined defined 注意a是没有被赋值,而b是未定义,这说明a是向上提升了而b却没有提升。
// a = 12; a相当于在这里赋值了、
var a = 12;
let b = 'b';
}
fun();
let的提升以及作用范围。
'use strict';
var a = 12;
function f() {
console.log(a); //defined 因为在函数外部声明了a,然后在函数内部又声明了a,此时函数外部的a就会失效,但是函数内部的a又没有提升的功能所以会输出未定义;
let a = 100;
}
f();
使用let代替匿名函数立即执行
'use strict';
(function () {
var config = [];
config.push(1);
config.push(2);
config.push(3);
console.log(config) //1, 2, 3
})();
let configs;
{
configs = [];
configs.push(4);
configs.push(5);
configs.push(6);
console.log(configs) //4, 5, 6
}
const的使用
const是常数顾名思义,就是声明后无法修改的。请看下面的例子。
const的提升和作用范围和let几乎一样,在这里就不做过多的例了。
'use strict';
const a = {
name: '铅笔'
};
a = 100; //此时会报错
常量不代表所以得东西不能修改,除了a = 这个指向不能修改 a对象内部的属性和值都是可以修改的。
'use strict';
const a = {
name: '铅笔'
};
a.name = '黑白';
a.email = '48988840@qq.com';
console.log(a); // {name : '黑白, email : '48988840@qq.com'}
怎么让a和内部的东西不能修改呢?
'use strict';
const a = {
name: '铅笔'
};
Object.freeze(a); //a内部的所有属性和值都不能修改了。
a.name = '黑白'; // 报错
a.email = '48988840@qq.com'; // 报错
console.log(a); // {name : '黑白, email : '48988840@qq.com'}
var、let、const的区别,以及作用范围。的更多相关文章
- var let const 的区别
Var let const 的区别 1.Var 定义的变量存在变量提升,而了let和const不存在变量提升.即在定义的变量代码上使用该变量,var的会输出undefined,而let的会报错. 2. ...
- 【前端面试】(四)JavaScript var let const的区别
视频链接: JavaScript var let const的区别 - Web前端工程师面试题讲解 参考链接: JavaScript 变量 JavaScript Let JavaScript Cons ...
- js中定义变量之②var let const的区别
var 上一篇文章有讲过,是js定义变量的关键词. 但是在es6中,新添加了两个关键词,用于变量声明的关键词:let 和const 接下来就说一下var let 和const的区别: 首先说var 用 ...
- let、var、const用法区别
1.var var 声明的变量为全局变量,并会进行变量提升:也可以只声明变量而不进行赋值,输出为undefined,以下写法都是合法的. var a var a = 123 2.let let 声明 ...
- JS中let、var、const的区别
先看let和var: 1. console.log(a); // undefined var a = 3; console.log(a); // Uncaught ReferenceError: Ca ...
- ES6中var/let/const的区别
let的含义及let与var的区别: let 声明的变量只在它所在的代码块有效: 如下: for (let i = 0; i < 10; i++) { console.log(i); } con ...
- var let const的区别
1. 变量提升: 浏览器在运行代码之前会进行预解析,不论var声明的变量处于当前作用域的第几行,都会提升到作用域的头部. 2. 只要块级作用域内存在let命令,它所声明的变量就“绑定”这个区域,不 ...
- ES6 新增声明变量的 var let const 的区别详解
var 如果使用关键字 var 声明一个变量,那么这个变量就属于当前的函数作用域,如果声明是发生在任何函数外的顶层声明,那么这个变量就属于全局作用域. let 1.let 声明的变量具有块作用域的特征 ...
- 【ES6 】var/let/const的区别
var 声明变量 没有区级作用域 可以预解析 可以重复定义 声明的全局变量属于顶层对象(window)的属性 let 声明变量 有块级作用域 没有预解析 不可以重复定义 声明的全局变量不属于顶层对象( ...
随机推荐
- C++并发多线程(一)
并发:两个或者更多的任务同时发生,一个程序同时执行多个独立的任务. 以往计算机 单核CPU 某一个时刻只能执行一个任务 由操作系统调度 每秒钟进行多次所谓的任务切换并发的假象(不是真正的并发),这种切 ...
- DP刷题
http://blog.csdn.net/a1dark/article/details/17115137
- Python3.5 学习一
初期学习,离不了环境搭建及语言的基本语法等. Python属于动态解析.跨平台. 前期了解了Pyhon环境搭建,在Linux(ubuntu)和windows上都有所学习了解,由于不再当前所学资料教程内 ...
- php请求远程url内容方法
php请求远程url内容有两个方法fopen/file_get_contents和curl. 1,fopen/file_get_contents与curl的差异 (1)fopen /file_get_ ...
- Linux 历史信息history显示执行时间
fc命令 fc命令自动掉用vi编辑器修改已有历史命令,当保存时立即执行修改后的命令,也可以用来显示历史命令.fc命令编辑历史命令时,会自动调用vi编辑器.fc保存文件后,会自动执行所编辑过的命令. 测 ...
- docker 实例设置自动重启
yaml格式太严格了,每个冒号后面都必须带有空格在linux中./代表当前目录,属于相对路径../代表上一级目录,属于相对路径/代表根目录,/开头的文件都是绝对路径./configure的意思是执行当 ...
- gettimeofday
作用: 需要打印代码执行到某处的时间,或者需要计算程序执行的时间差(精确到微妙级).这时会用到gettimeofday函数,它可以返回自1970-01-01 00:00:00到现在经历的秒数. 原型: ...
- .Net Core 使用NLog记录日志到文件和数据库
NLog 记录日志是微软官方推荐使用. 接下来,通过配置日志记录到文件和Sql Server数据库. 第一步:首先添加包NLog.Config (可通过微软添加包命令Install-Package 包 ...
- Oracle数据库学习(三):Oracle数据库的环境配置与安装
1.解压oracle安装包 将oracle的安装包和补丁包都存放在/home/oracle/soft目录下,然后对其进行解压,建议以root权限进行解压. unzip p13390677_112040 ...
- angluarjs的tab标签
JS代码 $scope.tabs = []; $rootScope.data = { current: "3" // 1代表张三,2代表李四,3代表王五 }; $rootScope ...