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 相关文章推荐
HTML-CSS群中单选引发的“事件”
Mar 05 Javascript
javascript function、指针及内置对象
Feb 19 Javascript
jquery 常用操作整理 基础入门篇
Oct 14 Javascript
JavaScript Cookie 直接浏览网站分网址
Dec 08 Javascript
JSON+JavaScript处理JSON的简单例子
Mar 20 Javascript
js与jquery获取父元素,删除子元素的两种不同方法
Jan 09 Javascript
现如今最流行的JavaScript代码规范
Mar 08 Javascript
js改变Iframe中Src的方法
May 05 Javascript
使用Ajax与服务器(JSON)通信实例
Nov 04 Javascript
mui back 返回刷新页面的实例
Dec 06 Javascript
angular json对象push到数组中的方法
Feb 27 Javascript
纯JS实现出生日期[年月日]下拉菜单效果
Jun 01 Javascript
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获取网页标题的3种实现方法代码实例
2014/04/11 PHP
Yii2学习笔记之汉化yii设置表单的描述(属性标签attributeLabels)
2017/02/07 PHP
php让json_encode不自动转义斜杠“/”的方法
2020/04/27 PHP
如何取得中文输入的真实长度?
2006/06/24 Javascript
Javascript 获取链接(url)参数的方法[正则与截取字符串]
2010/02/09 Javascript
DWZ刷新dialog解决方法
2013/03/03 Javascript
修改file按钮的默认样式实现代码
2013/04/23 Javascript
编程语言JavaScript简介
2014/10/16 Javascript
Node.js中使用socket创建私聊和公聊聊天室
2015/11/19 Javascript
轻松学习jQuery插件EasyUI EasyUI创建RSS Feed阅读器
2015/11/30 Javascript
jQuery实现立体式数字滚动条增加效果
2016/12/21 Javascript
纯js实现html转pdf的简单实例(推荐)
2017/02/16 Javascript
js实现瀑布流效果(自动生成新的内容)
2017/03/16 Javascript
详解基于DllPlugin和DllReferencePlugin的webpack构建优化
2018/06/28 Javascript
vue2 设置router-view默认路径的实例
2018/09/20 Javascript
[05:37]DOTA2-DPC中国联赛 正赛 Elephant vs iG 选手采访
2021/03/11 DOTA
python基础教程之数字处理(math)模块详解
2014/03/25 Python
python写入中英文字符串到文件的方法
2015/05/06 Python
八大排序算法的Python实现
2021/01/28 Python
Python中多个数组行合并及列合并的方法总结
2018/04/12 Python
python3基于OpenCV实现证件照背景替换
2018/07/18 Python
python3学生名片管理v2.0版
2018/11/29 Python
在Pytorch中计算卷积方法的区别详解(conv2d的区别)
2020/01/03 Python
Pytorch中的VGG实现修改最后一层FC
2020/01/15 Python
20行Python代码实现视频字符化功能
2020/04/13 Python
HTML5中的autofocus(自动聚焦)属性介绍
2014/04/23 HTML / CSS
HTML5如何为形状图上颜色怎么绘制具有颜色和透明度的矩形
2014/06/23 HTML / CSS
体育老师的教学自我评价分享
2013/11/19 职场文书
行政总经理岗位职责
2013/12/05 职场文书
优秀教师先进事迹
2014/01/22 职场文书
大学班级干部的自我评价分享
2014/02/10 职场文书
承诺书怎么写
2014/03/26 职场文书
党的群众路线教育实践方案
2014/05/11 职场文书
办理信用卡收入证明范例
2014/09/13 职场文书
2015年乡镇卫生院妇幼保健工作总结
2015/05/19 职场文书
「魔导具师妲莉亚永不妥协~从今天开始的自由职人生活~」1、2卷发售宣传CM公开
2022/03/21 日漫