es6 一些小知识
本人最近被es6感兴趣了,学习一些,以下就是自己总结的一些小知识
1、当你在百度输入"es6"关键字,点击进入es6入门,首先你需要知道怎样学习的顺序,先看第21章Module语法,
严格模式
ES6 的模块自动采用严格模式,不管你有没有在模块头部加上"use strict";
。
严格模式主要有以下限制。
- 变量必须声明后再使用 例如:let
- 函数的参数不能有同名属性,否则报错 例如:const let
- 不能使用
with
语句 - 不能对只读属性赋值,否则报错 例如:const
- 不能使用前缀0表示八进制数,否则报错
- 不能删除不可删除的属性,否则报错 例如:数组的length
- 不能删除变量
delete prop
,会报错,只能删除属性delete global[prop]
eval
不会在它的外层作用域引入变量eval
和arguments
不能被重新赋值arguments
不会自动反映函数参数的变化- 不能使用
arguments.callee
- 不能使用
arguments.caller
- 禁止
this
指向全局对象 - 不能使用
fn.caller
和fn.arguments
获取函数调用的堆栈 - 增加了保留字(比如
protected
、static
和interface
)
arguments.callee 与 argument.caller
function fatherCheck() {
check("");
function check() {
sonCheck();
function sonCheck() {
console.log(arguments.callee);
console.log(sonCheck.caller.caller)
}
}
}
fatherCheck();
arguments.callee返回sonCheck的函数体(当前正在执行的函数),sonCheck.caller返回调用sonCheck的函数,即check,而再往上一层,sonCheck.caller.caller就是返回调用check的函数体,也就是fatherCheck。那如果是继续往上一层呢?sonCheck.caller.caller.caller?就会变成null。书里也有讲,arguments.caller在非严格模式下永远是undefined。我们就可以判断值是null还是undefined来区分arguments.caller和函数的caller。
2、let 与 const
es5中的var变量 , 1)没有块级作用域;2)指向全局,可以解析和变量的提前声明;3)可以相互覆盖
es6中的const 主要是为了让变量更加安全,不会相互覆盖(只读属性)
es6中的let 1)没有解析与变量的提前声明,只能声明后调用; 2)不指向全局,块级作用域,作用域更安全;3)不能重复声明,否则会报错
var b = [1,2,3,4,5,6,7,8,9,10];
for(let i=0; i<b.length; i++){
b[i] = function(){
console.log(i)
}
// b[i](); 输出 0 1 2 3 4 5 6 7 8 9
}
b[6](); // 6
b[i](); //报错
3、解构赋值
es6 一些小知识的更多相关文章
- ES6的小知识(后半部分)
一.iterator和for-of循环 在js里有数组和对象,es6又新出现了set和map这样js就有了四种数据集合,这样可以组合使用他们,比如数组里拥有对象,set等,这样就需要一个统一的 接口机 ...
- ES6的小知识(前半部分)
一.let与const的使用 let:用来声明一个变量,与var类似 1.用let声明的变量,所声明的变量只在命令所在的代码块内有效 function hander(){ let a = 10; co ...
- react组件中的constructor和super小知识
react组件中的constructor和super小知识 1.react中用class申明的类一些小知识 如上图:类Child是通过class关键字申明,并且继承于类React. A.Child的类 ...
- 蓝牙Bluetooth技术小知识
蓝牙Bluetooth技术以及广泛的应用于各种设备,并将继续在物联网IoT领域担任重要角色.下面搜集整理了一些关于蓝牙技术的小知识,以备参考. 蓝牙Bluetooth技术始创于1994年,其名字来源于 ...
- HTML+CSS中的一些小知识
今天分享一些HTML.CSS的小知识,希望能够对大家有所帮助! 1.解决网页乱码的问题:最重要的是要保证各个环节的字符编码一致! (1)编辑器的编辑环境的字符集(默认字符集):Crtl+U 常见的编码 ...
- iOS APP开发的小知识(分享)
亿合科技小编发现从2007年第一款智能手机横空出世,由此开启了人们的移动智能时代.我们从一开始对APP的陌生,到现在的爱不释手,可见APP开发的出现对我们的生活改变有多巨大.而iOS AP ...
- Unix系统小知识(转)
Unix操作系统的小知识 2.VI添加行号/翻页/清屏 .在对话模式时(即输完Esc再输入: ),输入“:set number”可以将编辑的文本加上行号.跟玩俄罗斯方块一样方便的上下左右移动箭头的快捷 ...
- salesforce 零基础开发入门学习(十)IDE便捷小知识
在这里介绍两个IDE的便捷开发的小知识. 一) 本地调试 由于salesforce代码只能提交以后才能调试,所以很多时候调试代码很麻烦.新版增加了一个特性:即可以在本地调试相关的代码或者查看相关代码运 ...
- Jquery:小知识;
Jquery:小知识: jQuery学习笔记(二):this相关问题及选择器 上一节的遗留问题,关于this的相关问题,先来解决一下. this的相关问题 this指代的是什么 这个应该是比较好理 ...
随机推荐
- android mvp RxJava 框架结构分析
一个MVP结构:M是model,V是Fragment,P是提供者,P持有V和Model,控制获取数据并给V赋值.(结合了RXJava Retrofit和okHttp)
- 海康威视 嵌入到web页面相关问题
因项目上面需求,接触到了海康威视的设备,要把他嵌入到web页面中,所以就开始了爬坑之路 刚开始不知道如何把设备的页面嵌入到项目的web页面中,直到我遇见了他——“WEB3.0控件开发包V1.0.9_C ...
- New Concept English three(16)
35w/m 43 Mary and her husband Dimitri lived in the tiny village of Perachora in southern Greece. One ...
- 你必须了解的Session的本质
http://netsecurity.51cto.com/art/201402/428721.htm Cookie和session由于实现手段不同,因此也各有优缺点和各自的应用场景: 1. 应用场 ...
- flowable FormEngine和FormEngineConfiguration
FormEngineConfiguration 继承自 AbstractEngineConfiguration. 一.获得实例 FormEngineConfiguration提供了7个公开的静态方法: ...
- Intellij IDEA创建包(package)问题解决方案
问题 在使用IDEA创建包时会出现这样一种场景,就是当一个空包很长时,比如com.secbro.drools.model.这个时候如果你想给drools或model创建同级的包,你会发现,默认创建的包 ...
- Kotlin Reference (六) Control Flow
most from reference if表达式 在kotlin中,if是一个表达式,即它返回一个值.kotlin中没有Java中的三元运算符. // Traditional usage var m ...
- CUDA Samples: ripple
以下CUDA sample是分别用C++和CUDA实现的生成的波纹图像,并对其中使用到的CUDA函数进行了解说,code参考了<GPU高性能编程CUDA实战>一书的第五章,各个文件内容如下 ...
- ansible资料
ansible系列教程-强烈推荐看完 ansible官方编写的例子 ansible_ui Jenkins配置ansible galaxy 官方文档 中文教程1 中文教程2 playbook进阶 YAM ...
- LXC、LXD、Docker的区别与联系(by quqi99)
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 ( http://blog.csdn.net/quqi99 ) 容器 namespace技术用来进行做进程间的隔 ...