ES6-个人学习笔记一--let和const
es6已经推出一段时间了,虽然在兼容和应用上还有不少的难题,但是其提供的未来前端代码编程的发展趋势和一些好用的功能还是很吸引人的,因此个人买了‘阮一峰’先生的es6入门,希望对其有一个了解和学习,本系列博客文中为个人对书中例题的重现和理解,仅供学习交流之用,请勿转载,文中个人理解可能有误,请大家支持作者和正版阅读原版,在此感谢作者,书名为‘ES6标准入门’
首先由于阅览器的兼容问题,大家的es6代码如果需要实际运行必须经过解析为es5代码后插入网页才行,下面的方法直接使用了Google公司的Traceur转码器,比较方便,除此之外还可在安装完node.js环境后通过npm来下载对应的不同版本
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div ></div>
</body>
<script src="https://google.github.io/traceur-compiler/bin/traceur.js"></script>
<script src="https://google.github.io/traceur-compiler/bin/BrowserSystem.js"></script>
<script src="https://google.github.io/traceur-compiler/src/bootstrap.js"></script>
<script>
//无法对traceur进行设置,编译时可能有错误
console.log(traceur);
// Create the System object
window.System = new traceur.runtime.browserTraceurLoader();
// Set some experimental options
var metadata = {
traceurOptions: {
experimental: true,
properTailCalls: true,
symbols: true,
arrayComprehension: true,
asyncFunctions: true,
asyncGenerators: exponentiation,
forOn: true,
generatorComprehension: true
}
};
// Load your module
System.import('./myModule.js', {metadata: metadata}).catch(function(ex) {
console.error('Import failed', ex.stack || ex);
});
</script>
<script type="module">
//这里是正文,上面是使用es6的必要引入,traceur可以将es6代码翻译为阅览器识别的es5代码
console.log([1,2,3].map(x=>x*x));//测试结果是否为【1,4,9】
//首先是两种新增的声明方式,let和const,当然还有import和class,这两种高级用法以后介绍
//let声明的使用
{
let a =10 ;
var b = 1;
}
console.log(b);
// console.log(a);//let命令,只在let所在的代码块内有效,因此a无法找到
//例1:
// 循环中的变量i用var来声明,最后的输出结果为10,i是累加的
var a=[];
for(var i=0;i<10;i++){
a[i]=function(){
console.log(i)
}
}
a[6]();
//如果换成let来声明,则每一个j实际上都是新的变量,因此其中保存的j为当前数值
var b=[];
for(let j=0;j<10;j++){
b[j]=function(){
console.log(j)
}
}
b[6]();
//注意点:
//1.let不会发生声明提升,因此先使用后声明的情况不会发生,需要注意(特殊:如有全局变量a,在代码块中如果使用了let a 那么在声明前也不能使用a变量,即使a在全局中已经声明过,这称为暂时性死区)
//2.同一块级区域内let不允许重复声明同一变量
//3.let和const声明的变量不是全局对象(window)的属性,而var和function声明的则是。 </script>
</html>
//const用于声明常量,声明时必须马上赋值并且不可改变
const f=123;
//注意,当const声明对象时,只是冻结了指向的地址,即地址不会被改变但是数据可以改变
const foo={};
foo.add=123;
//foo={}//报错,当需要冻结对象数据时可以使用Object.freeze()
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div ></div>
</body>
<script src="https://google.github.io/traceur-compiler/bin/traceur.js"></script>
<script src="https://google.github.io/traceur-compiler/bin/BrowserSystem.js"></script>
<script src="https://google.github.io/traceur-compiler/src/bootstrap.js"></script>
<script>
//无法对traceur进行设置,编译时可能有错误
console.log(traceur);
// Create the System object
window.System = new traceur.runtime.browserTraceurLoader();
// Set some experimental options
var metadata = {
traceurOptions: {
experimental: true,
properTailCalls: true,
symbols: true,
arrayComprehension: true,
asyncFunctions: true,
asyncGenerators: exponentiation,
forOn: true,
generatorComprehension: true
}
};
// Load your module
System.import('./myModule.js', {metadata: metadata}).catch(function(ex) {
console.error('Import failed', ex.stack || ex);
});
</script>
<script type="module">
//这里是正文,上面是使用es6的必要引入,traceur可以将es6代码翻译为阅览器识别的es5代码
console.log([,,].map(x=>x*x));//测试结果是否为【1,4,9】
//首先是两种新增的声明方式,let和const,当然还有import和class,这两种高级用法以后介绍
//let声明的使用
{
let a =10 ;
var b = ;
}
console.log(b);
// console.log(a);//let命令,只在let所在的代码块内有效,因此a无法找到
//例:
// 循环中的变量i用var来声明,最后的输出结果为,i是累加的
var a=[];
for(var i=;i<;i++){
a[i]=function(){
console.log(i)
}
}
a[]();
//如果换成let来声明,则每一个j实际上都是新的变量,因此其中保存的j为当前数值
var b=[];
for(let j=;j<;j++){
b[j]=function(){
console.log(j)
}
}
b[]();
//注意点:
//1.let不会发生声明提升,因此先使用后声明的情况不会发生,需要注意(特殊:如有全局变量a,在代码块中如果使用了let a 那么在声明前也不能使用a变量,即使a在全局中已经声明过,这称为暂时性死区)
//2.同一块级区域内let不允许重复声明同一变量
//3.let和const声明的变量不是全局对象(window)的属性,而var和function声明的则是。 </script>
</html>
ES6-个人学习笔记一--let和const的更多相关文章
- es6学习笔记1 --let以及const
let语句的基本用法: 1.let声明的变量为块级作用域,只在最近的{}里面有效,如果在外部引用就会报错. { let a = 10; var b = "hello" } ale ...
- ES6学习笔记(一)——let和const
1.ES6学习之let.const (1).var.let.const 变(常)量声明 ES5 只有全局作用域和函数作用域,没有块级作用域,这带来很多不合理的场景. 在ES6中let就诞生了,实际上它 ...
- ES6学习笔记(1)----let和const命令
参考书<ECMAScript 6入门>http://es6.ruanyifeng.com/ let和const命令 let 总结1.声明变量基本使用方法与var 相同 不同点 a.在代 ...
- ES6学习笔记之 let与const
在js中,定义变量时要使用var操作符,但是var有许多的缺点,如:一个变量可以重复声明.没有块级作用域.不能限制修改等. //缺点1:变量可以重复声明 var a=1; var a=2; conso ...
- es6小白学习笔记(一)
1.let和const命令 1.es6新增了let和const命令,与var用法类似,但它声明的变量只在let所在的代码块内有效(块级作用域,es5只有全局和函数作用域) { let a = 1; v ...
- ES6 promise学习笔记 -- 基本用法
ES6 规定,Promise对象是一个构造函数,用来生成Promise实例. 下面代码创造了一个Promise实例. const promise = new Promise(function(reso ...
- es6.3学习笔记
es版本发布相当快,从1.x到2.x,再直接到5.x,6.x 索引这个词在es中有多重意思: 索引(名词):一个索引类似于传统数据库中的一个索引,用于存储关系型文档.索引的复数为indexes或ind ...
- PHP学习笔记三十一【const】
<?php //常量都是public类型 // const 常量名=赋值 .变量名不需要加$符号,也不需要要访问修饰符,默认就是public class A{ const TAX_RATE=0. ...
- JavaScript(ES6)学习笔记-Set和Map数据结构(一)
一.Set 1.ES6 提供了新的数据结构 Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set 本身是一个构造函数,用来生成 Set 数据结构. , , , , ']); s; // ...
随机推荐
- SRM 447(1-250pt, 1-500pt)
DIV1 250 水题...略. DIV1 500 抽象题意:有一个图,指定其中亮点p1和p2,删掉途中其他的一些点,使得p1和p2最短路大于3. 解法:使得p1和p2最短路为2的点一定要删掉.然后, ...
- 利用xshell从windows上传文件到虚拟机
Xshell实现Windows上传文件到Linux主机 经常有这样的需求,我们在Windows下载的软件包,如何上传到远程Linux主机上?还有如何从Linux主机下载软件包到Windows下:之前我 ...
- Linux后门入侵检测工具,附bash漏洞解决方法[转载]
转自:http://blog.jobbole.com/77663/ 官网 ClamAV杀毒软件介绍 ClamAV是一个在命令行下查毒软件,因为它不将杀毒作为主要功能,默认只能查出您计算机内的病毒,但是 ...
- 利用ServletFileUpload组件上传文件
自己的运用: public void UploadNoteFile(HttpServletRequest request,HttpServletResponse response){ String ...
- extern用法总结!
extern 在源文件A里定义的函数,在其他源文件中是看不见的(即不能訪问).为了在源文件B里能调用这个函数,应该在B的头部加上一个外部声明: extern 函数原型: 这样,在源文件B里也能够调 ...
- java web应用下跨域3招
一.设置服务器端,让ajax能直接调用 服务器端设置 tomcat 设置为例: 在web.xml中添加如下过滤器 <filter> <filter-name>CorsFilte ...
- There is an error while getting planid. No Free partitions available
问题概述 Oracle Advanced Supply Chain Planning最初的设置职责的时候有点问题,不知是不是要打什么补丁或其它配置什么东东,, 这个提示,,但我查到的分区是还有可用分区 ...
- android 73 下载图片
package com.ithiema.imageviewer; import java.io.InputStream; import java.net.HttpURLConnection; impo ...
- MYSQL 索引页 结构图
create table t( a ) not ) default null,primary key(a)); mysql> select * from t; +----+------+ | a ...
- HDU2088JAVA
Hot~~招聘——巴卡斯(杭州),亚信科技,壹晨仟阳(杭州) Box of Bricks Time Limit: 1000/1000 MS (Java/Others) Memory Limit: ...