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瀑布流布局实现方法详解
Feb 17 Javascript
Ionic默认的Tabs模板使用实例
Aug 29 Javascript
javaScript如何跳出多重循环break、continue
Sep 01 Javascript
微信小程序 Video API实例详解
Oct 02 Javascript
vue通过watch对input做字数限定的方法
Jul 13 Javascript
微信小程序开发教程之增加mixin扩展
Aug 09 Javascript
一个有意思的鼠标点击文字特效jquery代码
Sep 23 jQuery
vue mintui-Loadmore结合实现下拉刷新和上拉加载示例
Oct 12 Javascript
详解微信小程序之一键复制到剪切板
Apr 24 Javascript
详解vue页面首次加载缓慢原因及解决方案
Nov 06 Javascript
vue限制输入框只能输入8位整数和2位小数的代码
Nov 06 Javascript
几款主流好用的富文本编辑器(所见即所得常用编辑器)介绍
Mar 17 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 不同编码下的字符串长度区分
2009/09/26 PHP
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装(win+linux)
2012/05/05 PHP
SESSION信息保存在哪个文件目录下以及能够用来保存什么类型的数据
2012/06/17 PHP
ThinkPHP模板之变量输出、自定义函数与判断语句用法
2014/11/01 PHP
在Win2003(64位)中配置IIS6+PHP5.2.17+MySQL5.5的运行环境
2016/04/04 PHP
php curl中gzip的压缩性能测试实例分析
2016/11/08 PHP
TP5框架使用QueryList采集框架爬小说操作示例
2020/03/26 PHP
js 中 document.createEvent的用法
2010/08/29 Javascript
js中生成map对象的方法
2014/01/09 Javascript
JavaScript基础知识学习笔记
2014/12/02 Javascript
使用原生JS实现弹出层特效
2014/12/22 Javascript
jQuery类选择器用法实例
2014/12/23 Javascript
jQuery实现带幻灯的tab滑动切换风格菜单代码
2015/08/27 Javascript
AngualrJS中的Directive制作一个菜单
2016/01/26 Javascript
浅析jQuery Ajax通用js封装
2016/06/22 Javascript
分享JavaScript监听全部Ajax请求事件的方法
2016/08/28 Javascript
JS 实现 ajax 异步浏览器兼容问题
2017/01/21 Javascript
深入理解 webpack 文件打包机制(小结)
2018/01/08 Javascript
详解Puppeteer 入门教程
2018/05/09 Javascript
Vue CLI3 如何支持less的方法示例
2018/08/29 Javascript
JavaScript 继承 封装 多态实现及原理详解
2019/07/29 Javascript
Vuex的实战使用详解
2019/10/31 Javascript
vue 自定义右键样式的实例代码
2019/11/06 Javascript
vue中配置scss全局变量的步骤
2020/12/28 Vue.js
使用python删除nginx缓存文件示例(python文件操作)
2014/03/26 Python
python脚本实现分析dns日志并对受访域名排行
2014/09/18 Python
使用Turtle画正螺旋线的方法
2017/09/22 Python
解决Python requests库编码 socks5代理的问题
2018/05/07 Python
根据DataFrame某一列的值来选择具体的某一行方法
2018/07/03 Python
在Python中实现shuffle给列表洗牌
2018/11/08 Python
PyCharm 无法 import pandas 程序卡住的解决方式
2020/03/09 Python
django ORM之values和annotate使用详解
2020/05/19 Python
采购部部门职责
2013/12/15 职场文书
2014年基层党组织公开承诺书
2014/03/29 职场文书
中国梦口号
2014/06/13 职场文书
警察正风肃纪剖析材料
2014/10/16 职场文书