ES6新语法(一)
1.常量
ES5没有定义声明常量的方式,ES6标准中引入了新的关键字const来定义常量。
常量必须给初始值; 常量不能在同一作用域内重新定义或赋值;
<script>
const PI = 3.14;
console.log(PI);
</script>
2.块级作用域
JS中作用域有:全局作用域、函数作用域
ES6中新增了块级作用域。
块作用域由 { } 包括,if语句和for语句里面的{ }就属于块作用域。(不包括函数)
//注意 块级作用域中,使用var声明的变量是全局变量
{
var a = 1;
console.log(a);//
}
console.log(a);// if(true){
var b = 2;
console.log(b);//
}
console.log(b);//
2.2、let关键字声明块级变量
ES6中增加了let关键字声明变量,声明的变量只在当前代码块中生效(块级作用域)。
使用let
声明的变量可以重新赋值,但是不能在同一作用域内重新声明
<script>
// let声明的变量可以重新赋值
{
let a = 1;
console.log(a);
a = 2;
console.log(a);;
}
</script> <script>
// let声明的变量不能在同一作用域重新声明,直接报错 预解析错误
{
let a = 1;
console.log(a);
let a = 2;
console.log(a);
}
</script>
2.3、let变量没有变量提升
{
console.log(i);//报错
let i = 8;
}
2.4、应用:let块级变量解决i丢失的问题
var arr = [3,4,5,6,7]; for(let i=0; i<arr.length; i++){
// (function(i){
setTimeout(function(){
console.log(i);
//console.log(arr[i]);
}, 1000);
// })(i);
}
3.字符串模板(模板字面量)
js中单双引号字符串,均不解析变量,需要使用+号将变量拼接在字符串中。
ES6中提供了字符串模板语法,允许使用反引号(倒引号) `` 来创建字符串,里面可以包含${变量名}形式的变量占位符。 其中的变量会被解析。
//生成一个随机数
var num=Math.random(); //将这个数字输出到console
console.log('your num is ' + num);
console.log(`your num is ${num}`); var str = `hello
欢迎来到黑马大讲堂`;
console.log(str);
4.函数
4.1 参数默认值
//ES5中,只能变相实现参数默认值(函数内部加判断处理)
function f1(username){
//传统的指定默认参数的方式
var username = username || 'zhangsan';
console.log('Hello ' + username);
}
f1();//Hello zhangsan
f1('lisi');//Hello lisi //ES6中,直接给形参设置默认值
function f2(username='zhangsan'){
console.log(`Hello ${username}`);
//console.log('Hello ' + username);
} f2();//Hello zhangsan
f2('lisi');//Hello lisi
4.2 展开运算符(拆包)
ES6新增了展开运算符(用三个连续的点 (...
) 表示),能够将数组和字符串字面量展开为多个元素
//展开数组
var arr = [1, 2, 3];
console.log(arr); // [1, 2, 3]
console.log(...arr); // 1 2 3
//展开字符串
var str = "hello";
console.log(str);
console.log(...str);
应用:拓展参数
它允许传递数组或者类数组直接做为函数的参数。
//函数本来接收三个单独的参数
function f3(x,y,z){
console.log(x,y,z);
} //ES6中,我们可以将一个数组以拓展参数的形式传递,它能很好地映射到每个单独的参数
var arr=[3,4,5];
f3(...arr);//输出:3 4 5 //ES5中,如果需要传递数组当参数,我们需要使用函数的apply方法
f3.apply(null,arr);//输出:3 4 5
4.3 不定参数(可变参数/剩余参数)
不定参数是指,在函数中使用 命名参数 同时接收 不定数量 的 未命名参数,需要使用三个连续的点 (...
) 。
这是一种语法糖(在原语法上的简化用法),ES5通过函数内部的arguments对象来达到类似效果。
不定参数的格式:
//不定参数 将多个实参放在一个数组变量中
// ...x 三个点是固定格式,x是形参变量名
function f1(...x){
console.log(x);
}
f1(3,4,5); //[3,4,5] function f2(m, n, ...x){
console.log(m, n, x);
}
f2(2,3,4,5,6); // m=2 n=3 x=[4,5,6]
ES6新语法(一)的更多相关文章
- ES6新语法
ES6新语法概览 简介 ES6是JavaScript语言的新一代标准,加入了一些新的功能和语法,正式发布于2015年6月,亦称ES2015:该标准由ECMA(欧洲计算机制造联合会)的第39号技术专家委 ...
- ES6新语法的介绍
对于ES6新语法,阮一峰有一篇文章介绍的挺详细 http://es6.ruanyifeng.com/#docs/destructuring
- ES6新语法之let关键字;有别于传统关键字var的使用
ES6新语法于2015年发布:而我这个前端小白在17年才接触到.惭愧惭愧!!不过到目前为止,似乎只有FireFox和Chrome对ES6的支持相对良好.不过既然人家ES6已经出来了,还是要跟上技术的潮 ...
- ES6入门五:箭头函数、函数与ES6新语法
箭头函数的基本用法与特点 函数与ES6新语法 一.箭头函数的基本用法与特点 声明箭头函数采用声明变量和常量的关键字:var.let.const 箭头函数的参数:没有参数用"()"空 ...
- 总结常见的ES6新语法特性
前言 ES6是即将到来的新版本JavaScript语言的标准,他给我们带来了更"甜"的语法糖(一种语法,使得语言更容易理解和更具有可读性,也让我们编写代码更加简单快捷),如箭头函数 ...
- 总结常见的ES6新语法特性。
前言 ES6是即将到来的新版本JavaScript语言的标准,他给我们带来了更"甜"的语法糖(一种语法,使得语言更容易理解和更具有可读性,也让我们编写代码更加简单快捷),如箭头函数 ...
- ES6 | ES6新语法 在编码实践中的应用
本章探讨如何将 ES6 的新语法,运用到编码实践之中,与传统的 JavaScript 语法结合在一起,写出合理的.易于阅读和维护的代码. 多家公司和组织已经公开了它们的风格规范,本文的内容主要参考了 ...
- es6新语法系列,查找字符串,模板字符串
一.模板字符串: ES6引入了一种新型的字符串字面量语法,我们称之为模板字符串(template strings).除了使用反撇号字符 ` 代替普通字符串的引号 ' 或 " 外,它们看起来与 ...
- es6 新语法分享给爱前端的伙伴
相信es6大家并不陌生,那么我还是简单介绍一下es6,es是15年发布的,可以用babel转化成es5可以支持低端浏览器,es6是一种新的语法,流行的库基本都是基于es6开发的.所以小伙伴要掌握哦!而 ...
随机推荐
- 《Java练习题》进阶练习题(一)
编程合集: https://www.cnblogs.com/jssj/p/12002760.html 前言:不仅仅要实现,更要提升性能,精益求精,用尽量少的时间复杂度和空间复杂度解决问题. [程序48 ...
- 表达式和运算符知识总结(js)
文章目录: 一. 表达式和语句的区别 二. 自增自减运算符的运算规则 一. 表达式和语句的区别 表达式(expression)是JavaScript中的一个短语,JavaScript解释器会将其计算( ...
- 基于C# WPF框架的贪吃蛇
游戏开始界面 游戏开始 共有两条蛇,吃到红色食物加1分,吃到绿色毒食物减1分,知道0不减: 碰到墙壁游戏结束,碰到对方游戏结束,碰到自己游戏结束 此游戏通过Canvas画布布局,通过C#代码实现 游戏 ...
- 去掉 Idea 中注入 Mapper 警告的方法
使用 Idea 的时候,自动装配 Mybatis 的 mapper.会一直出现红色波浪线的警告.看着难受.下面提供几种方式 方式一 为 @Autowired 注解设置required = false ...
- python 多线程编程之threading模块(Thread类)创建线程的三种方法
摘录 python核心编程 上节介绍的thread模块,是不支持守护线程的.当主线程退出的时候,所有的子线程都将终止,不管他们是否仍在工作. 本节开始,我们开始介绍python的另外多线程模块thre ...
- 智能家居手势识别,只需百度AI即可搞定
上次我尝试做了一个给眼镜加特效,针对的是静态图像,具体文章参考 https://ai.baidu.com/forum/topic/show/942890 . 这次我尝试在视频中加眼镜特效,并且加上手势 ...
- SQL SERVER查询数据库所有表的大小,按照记录数降序排列
SELECT B.NAME,A.ROW_COUNT FROM SYS.DM_DB_PARTITION_STATS A,SYS.OBJECTS BWHERE A.OBJECT_ID=B.OBJECT_I ...
- Neo4j安装过程详解
在安装neo4j之前,需要安装Java JRE,并配置Java开发环境,然后安装neo4j服务. 一.CentOS下安装 1.下载Neo4j 去官网下载最新的neo4j,选择社区版.地址:https: ...
- Elon Mask 写作常见的三种错误
(其实非常的文不对题,这篇文章和写作的并没有多大的关系,如果是想看关于写作的技巧,可以直接离开,节省您的时间) 这是原文 写作就是在把你自身的想法用正确,合适的方式表达出来,但是不正确的表达可能会导致 ...
- java.sql.SQLException: Unknown initial character set index '255' received from server. Initial client character set can be forced via the 'characterEncoding' property.解决方案
解决方案: 首先查看数据库的版本号,删除旧的jar包,将mysql-connector-java.jar更换成对应版本号 同时在连接数据库的url后加上?useUnicode=true&cha ...