ES6笔记① var 和 let的区别
let 和 var的区别 答:不同点在于作用域
1.(全局下)首先 let关键字声明的变量是这样写会导致错误。
let声明的变量类似于”本地变量“,函数内如何不重新声明,还是会被改变
var a =10;
var a ="10a";
let b =20;
let b ="20b";
console.log(a);//10a
console.log(b);//报错 Identifier 'b' has already been declared
2.(方法内)var关键词的作用域是最近的函数作用域(如果在函数体的外部就是全局作用域);
var snack = 'Meow Mix';
function getFood(food) {
if (food) {
var snack = 'Friskies';
return snack;
}
return snack;
}
getFood(false); // undefined
//在函数中,用var声明的变量,会在整个函数作业域中,return时优先查找最近的函数作用域。
2-2 .let 关键词的作用域是最接近的块作用域(如果在任何块以外就是全局作用域),这将会比函数作用域更小。说明let声明的变量只是块级作用域
ps:getFood(true),并且没有在函数内声明,let声明的变量会改变
let snack = 'a';
function getFood(food) {
if (food) {
let snack = 'b';
return snack;
}
return snack;
}
console.log(getFood(false));//a
console.log(snack);//a
//这里return的还是全局变量
3.(循环中)
块(Block)
这是不同点, let 只是在 for 循环中, var 却是在整个函数都是可见的。
//let声明
let i = "aaa";
function odd(){
for(let i=0;i<10;i++){
console.log(i);//1,2,3,4,5,6,7,8,9
}
return i;
}
console.log(odd());//aaa
console.log(i);//aaa
//var 声明
var i = "aaa";
function odd(){
for(var i=0;i<10;i++){
console.log(i);//1,2,3,4,5,6,7,8,9
}
return i;
}
console.log(odd());//
console.log(i);//aaa
原文地址:http://blog.csdn.net/lcstrive/article/details/43149167
欢迎指出问题~~
ES6笔记① var 和 let的区别的更多相关文章
- es6中 var 和 let的区别
区别1:var没有块级作用域,只有 函数级作用域 和 全局作用域:let有块级作用域 function fn() { { var a = 10; } console.log(a) //输出10 } f ...
- ES6中var/let/const的区别
let的含义及let与var的区别: let 声明的变量只在它所在的代码块有效: 如下: for (let i = 0; i < 10; i++) { console.log(i); } con ...
- 【ES6 】var/let/const的区别
var 声明变量 没有区级作用域 可以预解析 可以重复定义 声明的全局变量属于顶层对象(window)的属性 let 声明变量 有块级作用域 没有预解析 不可以重复定义 声明的全局变量不属于顶层对象( ...
- ES6语法:var、let、const的区别详解
今天来说说es6的语法,最基础的也就是var,let,const 的用法与区别了,我们来看看他们之间的恩怨情仇. 首先来说说var,这个只要是学过js的都知道,它是用来声明一个变量的,但是它在开发中也 ...
- es6的let与es5的var定义变量的区别
es6的let与es5的var定义变量的区别 自身新手第一次接触let关键字的时候,不知道let与var的区别,本能认为是一样,但非如此,比如下述的代码运行就会报错: let hello = 'hel ...
- JavaScript自学笔记(2)---function a(){} 和 var a = function(){}的区别(javascript)
function a(){} 和 var a = function(){}的区别: 学习做浮窗,看到别人的代码里有: window.onresize = function(){ chroX = doc ...
- ES6笔记(4)-- Symbol类型
系列文章 -- ES6笔记系列 Symbol是什么?中文意思是标志.记号,顾名思义,它可以用了做记号. 是的,它是一种标记的方法,被ES6引入作为一种新的数据类型,表示独一无二的值. 由此,JS的数据 ...
- ES6笔记(7)-- Promise异步编程
系列文章 -- ES6笔记系列 很久很久以前,在做Node.js聊天室,使用MongoDB数据服务的时候就遇到了多重回调嵌套导致代码混乱的问题. JS异步编程有利有弊,Promise的出现,改善了这一 ...
- 通过ES6 Module看import和require区别
前言 说到import和require,大家平时开发中一定不少见,尤其是需要前端工程化的项目现在都已经离不开node了,在node环境下这两者都是大量存在的,大体上来说他们都是为了实现JS代码的模块化 ...
随机推荐
- zepto的touch.js左右滑动存在一些问题,用百度的touch.js代替
这几天用zepto想写一个移动端的活动,在实现左右滑动触发动画时,发现zepto的touch.js在ios的微信上有问题. 问题描述:左右滑动时如果手指没有一直跟频幕贴着(在手机上滑动时,如果手指不是 ...
- Android通过PHP连接MySQL(用到Json)
1下载phpnow 如果已经有mysql 则需要换一个端口 在服务器机器上的phpnow安装目录E:\PHPnow-1.5.5\htdocs下新建一个test.php文件: 其中我用的数据库是test ...
- Chrome和Firefox浏览器调试对比
最近的项目中使用Extjs5, 其中主要的一个特点就是js文件的动态加载,之前使用Firefox浏览器对js文件进行调试,打断点时,只对当次调试有效,刷新之后,由于动态加载的js文件(文件名后面加了一 ...
- 在Red Hat Enterprise Linux 5 64-bit安装oracle11g r2
网上这种文档一搜就一堆,没别的目的,刚接触oracle为了加深理解记忆.只要是跟我的版本一样操作系统和oracle软件,按照步骤肯定可以成功安装 在虚拟机上安装Red Hat Enterprise L ...
- C语言中宏定义(#define)时do{}while(0)的价值(转)
C语言中宏定义(#define)时do{}while(0)的价值 最近在新公司的代码中发现到处用到do{...}while(0),google了一下,发现Stack Overflow上早有很多讨论,总 ...
- zookeeper_01:zookeeper概述
应对场景: 相对于开发在一台计算机上运行的单个程序,如何让一个应用中的多个独立的程序协同工作是一件非常困难的事情.开发这样的应用,很容易让很多开发人员陷入如何使多个程序协同工作的逻辑中,最后导致没有时 ...
- [Math]Sqrt(x)
Total Accepted: 75767 Total Submissions: 314003 Difficulty: Medium Implement int sqrt(int x). Comput ...
- isNUll ,对于sql中的一个表的description的NULL和空格的处理
select client.clientname ,description,'client2'= case when client.Description IS NULL then client.c ...
- Azure File SMB3.0文件共享服务(2)
使用Powershell创建文件共享 Azure的文件存储结构如下所示,最基本的文件存储包含存储账号,文件共享,在文件共享下面你可以建立文件目录,上传文件: 在开始使用Powershell创建文件共享 ...
- Nginx 变量漫谈(五)
前面在 (二) 中我们已经了解到变量值容器的生命期是与请求绑定的,但是我当时有意避开了“请求”的正式定义.大家应当一直默认这里的“请求”都是指客户端发起的 HTTP 请求.其实在 Nginx 世界里有 ...