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_12_执行模型浅析
Oct 18 Javascript
js字符串的各种格式的转换 ToString,Format
Aug 08 Javascript
IE下通过a实现location.href 获取referer的值
Sep 04 Javascript
零基础搭建Node.js、Express、Ejs、Mongodb服务器及应用开发入门
Dec 20 Javascript
JavaScript中实现sprintf、printf函数
Jan 27 Javascript
jQuery插件实现大图全屏图片相册
Mar 14 Javascript
IE下JS保存图片的简单实例
Jul 15 Javascript
浅谈函数调用的不同方式,以及this的指向
Sep 17 Javascript
详解从0开始搭建微信小程序(前后端)的全过程
Apr 15 Javascript
微信公众号生成新浪短网址的实现(快速生成)
Aug 18 Javascript
JQuery事件委托(适用于给动态生成的脚本元素添加事件)
Feb 01 jQuery
vue 在单页面应用里使用二级套嵌路由
Dec 19 Vue.js
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
Apache设置虚拟WEB
2006/10/09 PHP
php Smarty 字符比较代码
2011/02/27 PHP
PHP使用SOAP扩展实现WebService的方法
2016/04/01 PHP
php 输入输出流详解及示例代码
2016/08/25 PHP
PHP使用xpath解析XML的方法详解
2017/05/20 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
2019/11/14 PHP
jQuery EasyUI API 中文文档 可调整尺寸
2011/09/29 Javascript
js自执行函数的几种不同写法的比较
2012/08/16 Javascript
jQuery查询数据返回object和字符串影响原因是什么
2013/08/09 Javascript
Jquery ajax基础教程
2015/11/20 Javascript
第一次接触神奇的Bootstrap基础排版
2016/07/26 Javascript
JavaScript实现邮箱地址自动匹配功能代码
2016/11/28 Javascript
JS中input表单隐藏域及其使用方法
2017/02/13 Javascript
一步一步的了解webpack4的splitChunk插件(小结)
2018/09/17 Javascript
js console.log打印对象时属性缺失的解决方法
2019/05/23 Javascript
Vue触发隐藏input file的方法实例详解
2019/08/14 Javascript
[04:16]DOTA2全国高校联赛16强抽签
2018/05/02 DOTA
[07:09]DOTA2-DPC中国联赛 正赛 Ehome vs Elephant 选手采访
2021/03/11 DOTA
Python基础教程之tcp socket编程详解及简单实例
2017/02/23 Python
Python实现随机生成手机号及正则验证手机号的方法
2018/04/25 Python
Python中shapefile转换geojson的示例
2019/01/03 Python
详解Python中打乱列表顺序random.shuffle()的使用方法
2019/11/11 Python
Python实现UDP程序通信过程图解
2020/05/15 Python
详解pandas映射与数据转换
2021/01/22 Python
Canvas globalCompositeOperation
2018/12/18 HTML / CSS
HTML5在微信内置浏览器下右上角菜单的调整字体导致页面显示错乱的问题
2021/01/19 HTML / CSS
Java的基础面试题附答案
2016/01/10 面试题
计算机专业应届生求职信
2014/04/06 职场文书
三好学生演讲稿范文
2014/04/26 职场文书
电钳工人个人求职信
2014/05/10 职场文书
医院竞聘演讲稿
2014/05/16 职场文书
十佳好少年事迹材料
2014/08/21 职场文书
员工教育培训协议书
2014/09/27 职场文书
党员示范岗材料
2014/12/19 职场文书
入党积极分子党支部意见
2015/06/02 职场文书
Fluentd搭建日志收集服务
2022/09/23 Servers