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代码的模块化 ...
随机推荐
- openssl 安装
六.运行“nmake -f ms\ntdll.mak install”安装编译后的OpenSSL到指定目录. 七.查看安装结果C:\usr\local\ssl或C:\openssl-0.9.8.e下包 ...
- PHP常用内置函数
$_SERVER['SCRIPT_NAME'] 返回/mantis/test.php 相对路径 __FILE__返回文件的绝对路径 $_SERVER['HTTP_X_FORWARDED_PROTO'] ...
- SQL Server 添加一条数据获取自动增长列的几种方法
数据库表设计 邓老师(老邓教的) insert into TestOne ','Test011') select @@IDENTITY as '自动增长ID' 杨老师(老杨教的) insert ...
- eclipse.ini内存设置
这两天用eclipse,突然变得很卡,就上网找了些资料,对eclipse.ini启动参数配置,整理如下: 1.先了解下JVM内存管理机制,JVM内存分为堆内存和非堆内存 2.JVM内存限制 首先JVM ...
- CSS3属性transform详解之(旋转:rotate,缩放:scale,倾斜:skew,移动:translate)(转载)
在CSS3中,可以利用transform功能来实现文字或图像的旋转.缩放.倾斜.移动这四种类型的变形处理,本文将对此做详细介绍. 一.旋转 rotate 用法:transform: rotate(45 ...
- 【SQL语句】 - 在所有存储过程中查找关键字,关键字不区分大小写 [sp_findproc]
USE [EShop]GO/****** Object: StoredProcedure [dbo].[sp_findproc] Script Date: 2015/8/19 11:05:24 *** ...
- AdapterView及其子类之三:基于ListView及ArrayAdapter实现列表
见归档项目ListViewDemo.zip. 基本步骤如下: 1.创建主布局文件,里面包含一个ListView元素. <RelativeLayout xmlns:android="ht ...
- Windows消息拦截技术的应用(作者博客里有许多相关文章)
民航合肥空管中心 周毅 一.前 言 众所周知,Windows程式的运行是依靠发生的事件来驱动.换句话说,程式不断等待一个消息的发生,然后对这个消息的类型进行判断,再做适当的处理.处理完此次消息后又回到 ...
- Mysql 利用multiline 实现多行匹配
<pre name="code" class="html">input { file { type => "zj_mysql&quo ...
- IIS给网站地址配置成HTTPS的
2.增加网站绑定 3.如果https的URL访问不了,可能是443端口被占用 然后netstat -anono