ES6新特性之变量和字符串用法示例


Posted in Javascript onApril 01, 2017

本文实例讲述了ES6新特性之变量和字符串用法。分享给大家供大家参考,具体如下:

一、变量

1. LET

我们都习惯用var 来声明变量,现在还可以用let来声明变量,两者的主要区别是作用域:var声明的变量作用域为包围它的函数,而let声明的变量作用域仅在它所在的块中。(在ES5中是没有块的概念的)。

if(true){
  let a=1;
}
console.log(a);//undifined

这样使代码更加干净,减少滞留的变量,再如我们经常用的数组遍历:

for(let i=0;i<lists.length;i++){
  //do somthing with lists[i]
}
console.log(i)l//undifined

通常情况下,我们在同一作用域里使用变量J来完成另一个遍历,但是现在有了let,可以安全的再一次声明i变量,因为它只在被声明的块中有效。

2.CONST

const也是用于声明块作用域变量的方法,使用const可以声明一个值得只读引用,必须直接给一个变量赋值,如果尝试该变量或者没有立即给变量赋值,都将报错:

const MY_CONSTENT=1;
MY_CONSTENT=2;//error
const MY_CONSTENT;//error

注意对象的属性或数组成员还是可以改变的

const MY_OBJECT={some:1};
MY_OBJECT.some='body';

3.箭头函数

箭头函数使得JS代码更加简洁。下面将箭头函数和ES5版本的函数写法:

//箭头函数
let books=[{"title":"X","price":20},{"title":"Y","price":40}];
let titles=books.map(item=>item.title);
//ES5函数
var titles=books.map(function(item){
  return item.title;
});

观察箭头函数的语法,会发现其中并没有出现function关键字,只保留零或多个参数、“胖箭头”(“=>”)和函数表达式,return声明被隐式加入。带有零或者多个参数时必须使用括号:

//no arguments
books.map(()=>1);//[1,1]
//Mutiple arguments
[1,2].map((n,index)=>n*index);//[0,2]

如果需要写更多的逻辑或更多的空格,可以把函数表达式放在({})块中:

let result=[1,2,3,4,5].map(n=>{
  n=n%3;
  retutn n;
})

箭头函数不单是为了输入更少的字符,它们的表现也和一般的函数不同。它的继承了当前上下文的this和arguments,这就意味着你可以避免写var that=this这样的代码,也不需要把函数绑定到正确的上下文了:

//ES6
let books={
  title'X',
  sellers:['A','B'],
  printSellers(){
    this.sellers.forEach(seller=>console.log(seller+'seller'+this.title))
  }
};
//ES5
var books={
  title='X',
  sellers:['A','B'],
  printSellers:function(){
   var that=this;
   this.sellers.forEach(function(seller){
     console.log(seller+'seller'+that.title)
   })
  }
};

二、字符串

1.方法

字符串String原型中增添了几个新方法,用于简化需要用indexOf()方法来解决的问题的复杂度,并达到同样的效果:

'my string'.startsWith('my');//true
'my string'.endsWith('my');//false
'my string'.includes('str');//true

添加了另一个方法,用于创建重复字符串:

'my'.repeat(3);//'my my my'

2. 模板字符串

模板字符串提供提供一个简洁的方式来实现字符串插值,它基于美元符号和花括号${...},模板字符串置于引号之中:

//ES6
let name='json',
  apples=5,
  pears=7,
  bananas=function(){return 3};
console.log('this is${name}');
console.log('he carries ${apples} apples,${pears} pears,and ${bananas()} bananas');
//ES5
console.log('he carries'+ ${apples}+' apples,'+${pears}+' pears,and '+${bananas()}+' bananas');

以上形式对比ES5仅仅是便于字符串的拼接,实际上,模板字符串还可以用于多行字符串(空格也是字符串的一部分):

let x='1...
  2...
  3 lines long!';
//ES5
var x='1...'+
  '2...'+
  '3 lines long!';
var x="1...2...3 lines long!';

希望本文所述对大家ECMAScript程序设计有所帮助。

Javascript 相关文章推荐
JavaScript中获取元素索引的函数
Sep 10 Javascript
Js放到HTML文件中的哪个位置有什么区别
Aug 21 Javascript
跟我学习javascript的call(),apply(),bind()与回调
Nov 16 Javascript
模仿password输入框的实现代码
Jun 07 Javascript
基于JQuery实现分隔条的功能
Jun 17 Javascript
Angular.JS实现无限级的联动菜单(使用demo)
Feb 08 Javascript
微信小程序 本地图片按照屏幕尺寸处理
Aug 04 Javascript
Extjs 中的 Treepanel 实现菜单级联选中效果及实例代码
Aug 22 Javascript
cordova入门基础教程及使用中遇到的一些问题总结
Nov 14 Javascript
Vue路由之JWT身份认证的实现方法
Aug 26 Javascript
vue实现购物车小案例
Sep 27 Javascript
基于jquery实现彩色投票进度条代码解析
Aug 26 jQuery
ES5学习教程之Array对象
Apr 01 #Javascript
jq checkbox 的全选并ajax传参的实例
Apr 01 #Javascript
js实现音频控制进度条功能
Apr 01 #Javascript
ES6(ECMAScript 6)新特性之模板字符串用法分析
Apr 01 #Javascript
Linux CentOS系统下安装node.js与express的方法
Apr 01 #Javascript
原生JS实现九宫格抽奖效果
Apr 01 #Javascript
关于Node.js的events.EventEmitter用法介绍
Apr 01 #Javascript
You might like
用来给图片加水印的PHP类
2008/04/09 PHP
解决PHP超大文件下载,断点续传下载的方法详解
2013/06/06 PHP
php截取中文字符串函数实例
2015/02/23 PHP
PHP实现的简单AES加密解密算法实例
2017/05/29 PHP
PHP单元测试配置与使用方法详解
2019/12/27 PHP
js实现ASP分页函数 HTML分页函数
2006/09/22 Javascript
js中substring和substr的详细介绍与用法
2013/08/29 Javascript
Jquery全选与反选点击执行一次的解决方案
2015/08/14 Javascript
JavaScript函数的一些注意要点小结及js匿名函数
2015/11/10 Javascript
JS实现太极旋转思路分析
2016/12/09 Javascript
JavaScript获取短信验证码(周期性)
2016/12/29 Javascript
AngularJS通过ng-Img-Crop实现头像截取的示例
2017/08/17 Javascript
原生JS实现移动端web轮播图详解(结合Tween算法造轮子)
2017/09/10 Javascript
vue+axios实现文件下载及vue中使用axios的实例
2018/09/21 Javascript
JavaScript数组去重的方法总结【12种方法,号称史上最全】
2019/02/28 Javascript
微信小程序云开发实现增删改查功能
2019/05/17 Javascript
js获取 gif 的帧数的代码实例
2019/09/10 Javascript
通过js实现压缩图片上传功能
2020/02/25 Javascript
微信小程序scroll-view的滚动条设置实现
2020/03/02 Javascript
vue打开新窗口并实现传参的图文实例
2021/03/04 Vue.js
[01:50]WODOTA制作 DOTA2中文宣传片《HERO》
2013/04/28 DOTA
python 获取本机ip地址的两个方法
2013/02/25 Python
Python字符串格式化输出方法分析
2016/04/13 Python
Python3中条件控制、循环与函数的简易教程
2017/11/21 Python
python正则实现计算器功能
2017/12/14 Python
在tensorflow实现直接读取网络的参数(weight and bias)的值
2020/06/24 Python
Skyscanner澳大利亚:全球领先的旅游搜索网站
2018/03/24 全球购物
英国领先的运动物理治疗供应公司:Vivomed
2018/07/14 全球购物
Hotels.com韩国:海外国内旅行所需的酒店和住宿预订网站
2020/05/08 全球购物
模具数控专业自荐信
2014/01/27 职场文书
人力管理专业毕业生求职信
2014/02/27 职场文书
经典广告词大全
2014/03/14 职场文书
《宋庆龄故居的樟树》教学反思
2014/04/07 职场文书
养成教育经验材料
2014/05/26 职场文书
JS如何实现基于websocket的多端桥接平台
2021/05/14 Javascript
zabbix如何添加监控主机和自定义监控项
2022/08/14 Servers