JS中let、var、const的区别
先看let和var:
1.
console.log(a); // undefined
var a = 3;
console.log(a); // Uncaught ReferenceError: Cannot access 'a' before initialization
let a = 3;
let fn = function () {};
2.
var x = 3;
console.log(window.x); // let y = 3;
console.log(window.y); // undefined
function fn() {
var x = 1;
y = 2;
console.log(fn.x); // undefined
console.log(fn.y); // undefined
}
fn();
console.log(window.x); // undefined
console.log(window.y); //
3.
var y = 21;
var y = 24;
console.log(y); //
console.log('OK'); // Uncaught SyntaxError: Identifier 'x' has already been declared
let x = 21;
console.log(x);
let x = 24;
console.log(x);
4.
if (1 === 1) {
let x = 3;
console.log(x);
}
console.log(x); // Uncaught ReferenceError: x is not defined
let a = 1;
switch (a) {
case 1:
let x = 2;
break;
}
console.log(x); // Uncaught ReferenceError: x is not defined
try {
let x = 100;
console.log(x); //
console.log(a);
} catch (e) {
let y = 200;
console.log(y); //
}
console.log(x);// Uncaught ReferenceError: x is not defined
try {
let x = 100;
console.log(x); //
console.log(a);
} catch (e) {
let y = 200;
console.log(y); //
}
console.log(y); // Uncaught ReferenceError: y is not defined
从上可以看出,let存在块级作用域,var则没有。
还有一个特殊的,暂时性死区:
console.log(typeof a); //=>undefined
console.log(typeof a); //=>Uncaught ReferenceError: Cannot access 'a' before initialization
let a;
再看let(var)和const
let x = 10;
x = 20;
console.log(x); //
const y = 10;
y = 20; // Uncaught TypeError: Assignment to constant variable.
console.log(y);
const obj = {a: 10};
obj.b = 20;
console.log(obj); // {a: 10, b: 20}
JS中let、var、const的区别的更多相关文章
- JavaScript中的var,const,let区别与用法(浅谈)
let 和 const是(ES6) 新增加了两个重要的 JavaScript 关键字. 1.var全局变量 //全局变量在 JavaScript 程序的任何地方都可以访问 //定义的变量可以修改,如果 ...
- js中加“var”和不加“var”的区别
JavaScript 拥有动态类型.这意味着相同的变量可用作不同的类型: var x // x 为 undefined var x = 6; // x 为数字 var x = "Bill&q ...
- JS 中的require 和 import 区别整理
ES6标准发布后,module成为标准,标准的使用是以export指令导出接口,以import引入模块,但是在我们一贯的node模块中,我们采用的是CommonJS规范,使用require引入模块,使 ...
- JS中isPrototypeOf 和hasOwnProperty 的区别 ------- js使用in和hasOwnProperty获取对象属性的区别
JS中isPrototypeOf 和hasOwnProperty 的区别 1.isPrototypeOf isPrototypeOf是用来判断指定对象object1是否存在于另一个对象object2的 ...
- (网页)Angular.js 中 copy 赋值与 = 赋值 区别
转自st.gg Angular.js 中 copy 赋值与 = 赋值 区别 为什么用 $scope.user = $scope.master; $scope.master 会跟着 $scope.use ...
- js中的substr和substring区别
js中的substr和substring区别 Substring: 该方法可以有一个参数也可以有两个参数. (1) 一个参数: 示例: var str=“Olive”: str.substring( ...
- 浅谈JS中的!=、== 、!==、===的用法和区别 JS中Null与Undefined的区别 读取XML文件 获取路径的方式 C#中Cookie,Session,Application的用法与区别? c#反射 抽象工厂
浅谈JS中的!=.== .!==.===的用法和区别 var num = 1; var str = '1'; var test = 1; test == num //tr ...
- JS中的var、let、const三者的区别
ES5:var ES6:let.const ES5中的作用域有---全局作用域.函数作用域 ES6中新增了---块级作用域(块级作用域由{}包裹,if语句.for语句中的{}也属于块 ...
- 浅谈js中null和undefined的区别
在JS中,null和undefined是经常让人摸不着头脑的东西,尤其是在数据初始化以及处理的过程中,经常稍微不注意,就会让页面在渲染时出现报错,下面来细说下,这两者之间的区别: null 表示一个对 ...
- js中的call,apply,bind区别
在JavaScript中,call.apply和bind是Function对象自带的三个方法,这三个方法的主要作用是改变函数中的this指向. call.apply.bind方法的共同点和区别:app ...
随机推荐
- axios用post传参,后端无法获取参数问题
最近用vue+nodejs写项目,前端使用axios向后台传参,发现后台接收不到参数. 后台是node+express框架,然后使用了body-parser包接收参数,配置如下: const expr ...
- 长连接 Websocket
import json from flask import Flask,request,render_template from geventwebsocket.handler import WebS ...
- nmap详解之基础示例
扫描主机target.example.com的所有TCP端口 nmap -v target.example.com 发起对target.example.com所在网络上的所有255个IP地址的秘密SY ...
- 深浅拷贝 集合(定义,方法) 函数(定义,参数,return,作用域) 初识
深浅拷贝 在python中浅拷贝 a=[1,2,3,4,]b=a.copy()b[0]='3333'print(a) #[1, 2, 3, 4] 浅拷贝一层并不会对a造成变化print(b) #[33 ...
- Java7循环结构综合练习
import java.util.Scanner; public class jh_01_学员操作_选择游戏 { public static void main(String[] args) { Sc ...
- 一个工程中cpp文件的编译顺序
做了一个实验. 最后build失败,失败的原因是变量i被重定义了.原本按照我的思路,是不应该失败的.因为我用了条件编译,若先编译Source.cpp,则会#define __HEADER_H__并且定 ...
- 《C/C++实现Console下的加载进度条模拟[美观版]》
前言 有时候我们会遇到在CMD或DOS控制台上出现的加载进度条,虽然不是如网页和软件写的美观.但确确实实也有着自己的特色.而且,一个好看的加载进度条也能增加用户使用控制台程序的体验!所以,拿来研究 ...
- Hibernate4.x 报错 Space is not allowed after parameter prefix ':'
1.问题描述 hibernate4.0使用原生sql: (SELECT a.user_id,(@rowno:=@rowno+1) as rowno,a.goods_value FROM n_wo ...
- SqlServer触发器的基础知识
触发器的基础知识:create trigger tr_name on table/view{for | after | instead of } [update][,][insert][,][dele ...
- lwip netbuf
lwip2.0.2 netbuf_new——分配netbuf结构体的内存. netbuf_alloc,分配netbuf中pbuf内存(pbuf_alloc中PBUF_RAM类型,包括pbuf结构体和p ...