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 正则表达式相关应介绍
Nov 27 Javascript
自己编写的类似JS的trim方法
Oct 09 Javascript
Javascript基础 函数“重载” 详细介绍
Oct 25 Javascript
jquery实现类似淘宝星星评分功能有截图
Sep 15 Javascript
Javascript闭包用法实例分析
Jan 23 Javascript
jquery append 动态添加的元素事件on 不起作用的解决方案
Jul 30 Javascript
Laravel中常见的错误与解决方法小结
Aug 30 Javascript
浅析Node.js:DNS模块的使用
Nov 23 Javascript
js学习总结之DOM2兼容处理重复问题的解决方法
Jul 27 Javascript
vue+socket.io+express+mongodb 实现简易多房间在线群聊示例
Oct 21 Javascript
jQuery中的for循环var与let的区别
Apr 21 jQuery
vue实现div单选多选功能
Jul 16 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
基于simple_html_dom的使用小结
2013/07/01 PHP
php源码分析之DZX1.5字符串截断函数cutstr用法
2015/06/17 PHP
PHP getallheaders无法获取自定义头(headers)的问题
2016/03/23 PHP
老生常谈ThinkPHP中的行为扩展和插件(推荐)
2017/05/05 PHP
java解析json方法总结
2019/05/16 PHP
js实现的日期操作类DateTime函数代码
2010/03/16 Javascript
表单类各种类型(文本框)失去焦点效果jquery代码
2013/04/26 Javascript
一个html5播放视频的video控件只支持android的默认格式mp4和3gp
2014/05/08 Javascript
用队列模拟jquery的动画算法实例
2015/01/20 Javascript
JS实现单击输入框弹出选择框效果完整实例
2015/12/14 Javascript
Nodejs爬虫进阶教程之异步并发控制
2016/02/15 NodeJs
js下将金额数字每三位一逗号分隔
2016/02/19 Javascript
Node.js插件安装图文教程
2016/05/06 Javascript
浅谈几种常用的JS类定义方法
2016/06/08 Javascript
Vue 中批量下载文件并打包的示例代码
2017/11/20 Javascript
总结JavaScript在IE9之前版本中内存泄露问题
2018/04/28 Javascript
使用Vue 实现滑动验证码功能
2019/06/27 Javascript
浅谈监听单选框radio改变事件(和layui中单选按钮改变事件)
2019/09/10 Javascript
微信小程序 获取手机号 JavaScript解密示例代码详解
2020/05/14 Javascript
vue $mount 和 el的区别说明
2020/09/11 Javascript
OpenLayer3自定义测量控件MeasureTool
2020/09/28 Javascript
[00:36]TI7不朽珍藏III——斯温不朽展示
2017/07/15 DOTA
Python求两个文本文件以行为单位的交集、并集与差集的方法
2015/06/17 Python
Python的标准模块包json详解
2017/03/13 Python
Python复数属性和方法运算操作示例
2017/07/21 Python
python求一个字符串的所有排列的实现方法
2020/02/04 Python
Python Tricks 使用 pywinrm 远程控制 Windows 主机的方法
2020/07/21 Python
python UDF 实现对csv批量md5加密操作
2021/01/01 Python
英国手工布艺沙发在线购买:Sofas & Stuff
2018/03/02 全球购物
介绍Java的内部类
2012/10/27 面试题
最新大学毕业求职简历的自我评价
2013/10/18 职场文书
讲解员培训方案
2014/05/04 职场文书
酒店周年庆活动方案
2014/08/21 职场文书
用golang如何替换某个文件中的字符串
2021/04/25 Golang
Python爬虫之爬取最新更新的小说网站
2021/05/06 Python
Python游戏开发实例之graphics实现AI五子棋
2021/11/01 Python