let 和 coust —— ES6新语法学习心得

## 1.let  ##

作用:1. 将变量作用域设置为当前{},外部无法访问

2.在同一个作用域下不允许重复定义相同变量

## 例1:let的作用域 ##

{

var a= 10;

let b =20;

}

console.log(a)  //10

console.log(b)   // b is not defined

let会将{}作为其作用域,在外面不能访问

## 例 2: let不会造成变量泄漏 ##

for(var i  =0; i < 10 ;i++){

console.log(i)

}

console.log(i)   //10

var 声明的变量i是全局声明的变量,一直没被释放,并与想要的不符

for(let i  =0; i < 10 ;i++){

console.log(i)

}

console.log(i)  // i is not defined

let 声明的变量只在其作用域有效

## 例 3:let能解决for循环的 变量泄漏问题 ##

var arr = [];

for(var i  =0; i < 10 ;i++){

arr[i] = function(){

console.log(i)

}

}

arr[6]()  //10

i是var声明的全局变量,一直存在,所以arr里的任意项最后都是打印10

//////////////////////////////////

var arr = [];

for(let i  =0; i < 10 ;i++){

arr[i] = function(){

console.log(i)

}

}

arr[6]()  //6

i 是let 声明的变量,只在for循环中有效,循环完后销毁

## 例 4 :不会存在变量提升 ##

console.log(a);  //undefined

console.log(b);  // b is not defined

var a = 10;

let b  = 20;

所有不能在let声明前,调用该变量!!!

## 例 5: 封闭作用域(暂时性死区) ##

var temp = 10;

if(true){

console.log(temp);  //temp is not defined

let temp = 20;

}

——>只要在当前作用域内用let声明的变量,就不是自由变量

——>*typeof 测试不一定正确*

console.log(typeof b)  //undefine

——>

let b = 20

console.log(typeof b)  //number

——>

console.log(typeof b)  //b is not defined

let b = 20

## 例 6 不允许重复声明 ##

let a = 10;

var a = 5 ;  //报错

let a = 10;

let a = 5 ;  //报错

## 2.coust 声明常量 ##

常量一般大写,规范

※ const NUM = 1;    //const声明的常量不允许修改

※ const 声明的常量必须立即赋值;

※ 与let一样 只能在当前块级作用域有效

if(true){

const max = 3

}

console.log(max)  //max is not defined

※ 对于引用类型,只能保证常量指向的地址不变,不能保证地址里的值    不变

时间: 2024-08-12 09:23:44

let 和 coust —— ES6新语法学习心得的相关文章

解构赋值 —— ES6新语法学习心得

## 3.解构赋值 ## 作用:将数组.对象.函数的参数 解构,对变量进行赋值,可以直接调用该变量,大大提高效率 ## 例 1: ##  标准模式的解构赋值 var [a,b,c]=[1,2,3] console.log(a) //1 console.log(b) //2 console.log(c) //3 ## 例2 : ##  嵌套解构赋值,只要"模式匹配",就能解构赋值,如果没有对应的值,就是undefined let [foo, [[bar], baz]] = [1, [[2

总结常见的ES6新语法特性

总结常见的ES6新语法特性 ES6给我们带来了更"甜"的语法糖(一种语法,使得语言更容易理解和更具有可读性,也让我们编写代码更加简单快捷),如箭头函数(=>).class等等.用一句话来说就是: ES6给我们提供了许多的新语法和代码特性来提高javascript的体验 不过遗憾的是,现在还没有浏览器能够很好的支持es6语法,点这里查看浏览器支持情况,所以我们在开发中还需要用babel进行转换为CommonJS这种模块化标准的语法. 因为下面我会讲到一些es6新特性的例子,如果想要

ES6新语法之---对象字面量扩展、模板字符串(5)

这节课学习ES6中对象字面量扩展和新增模板字符串 第一部分:对象字面量扩展 1.简洁写法 ES6对于对象字面量属性提供了简写方式. 1.1:属性简写 //传统写法 var x = 2, y = 3, o = { x: x, y: y }; //ES6简洁写法 var x = 2, y = 3, o = { x, //属性名和赋值变量名相同时,可简写 y }; 1.2:方法简写 //传统写法 var o = { x: function() { //... }, y: function() { //

总结常见的ES6新语法特性。

前言 ES6是即将到来的新版本JavaScript语言的标准,他给我们带来了更"甜"的语法糖(一种语法,使得语言更容易理解和更具有可读性,也让我们编写代码更加简单快捷),如箭头函数(=>).class等等.用一句话来说就是: ES6给我们提供了许多的新语法和代码特性来提高javascript的体验 不过遗憾的是,现在还没有浏览器能够很好的支持es6语法,点这里查看浏览器支持情况,所以我们在开发中还需要用babel进行转换为CommonJS这种模块化标准的语法. 因为下面我会讲到一

ES6新特性学习

ES6是ECMAScript 6的缩写简称,2015 年 6 月,ECMAScript 6 正式通过,成为国际标准.ES6带来的新功能涵盖面很广,还有很多很便利的功能.下面来记一下我接触到的几个新特性. 1.模板字符串,用反单引号包起来,可以实现字符串回车换行,也可以在字符串里拼接变量,${变量},很方便使用. var name="fanfan"; var age="20"; console.log("Hello,My name is "+nam

es6新语法

SegmentFault 头条 问答 专栏 讲堂 职位 活动 搜索 消息 注册 · 登录 home javascript php python java mysql ios android node.js html5 linux c++ css3 git golang ruby vim docker mongodb 文 es6语法快速上手 es6 javascript 奋进的小莫 2016年06月17日发布 推荐 2 推荐 收藏 44 收藏,6.5k 浏览 随着google和firfox以及no

ES6新语法之---函数扩展(7)

这节学习ES6中对函数新增的方法和属性. 1.新增函数的参数默认值 参考S6系列第二篇:http://www.cnblogs.com/diweikang/p/8976854.html 2.新增了函数的rest参数 参考ES6系列第二篇:http://www.cnblogs.com/diweikang/p/8976854.html 3.length属性 作用:获取函数预期传入的参数个数. 指定默认值后,length属性将返回没有指定默认值参数的个数. (function (a) {}).lengt

ES6新语法概览

简介 ES6是JavaScript语言的新一代标准,加入了一些新的功能和语法,正式发布于2015年6月,亦称ES2015:该标准由ECMA(欧洲计算机制造联合会)的第39号技术专家委员会(TC39)制订,ES7正在制订中,据称会在2017年发布. 语法 箭头函数.this ES6中可以使用 => 作为函数表达形式,极简风格,参数+ => +函数体. var foo = function(){return 1;}; //等价于 let foo = () => 1; let nums = [

ES6新语法(一)

1.常量         ES5没有定义声明常量的方式,ES6标准中引入了新的关键字const来定义常量.         常量必须给初始值: 常量不能在同一作用域内重新定义或赋值:  <script> const PI = 3.14; console.log(PI); </script> 2.块级作用域          JS中作用域有:全局作用域.函数作用域          ES6中新增了块级作用域.          块作用域由 { } 包括,if语句和for语句里面的{