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 相关文章推荐
extjs实现选择多表自定义查询功能 前台部分(ext源码)
Dec 20 Javascript
Nginx上传文件全部缓存解决方案
Aug 17 Javascript
基于JavaScript实现TAB标签效果
Jan 12 Javascript
JS button按钮实现submit按钮提交效果
Nov 01 Javascript
微信小程序 页面跳转传递值几种方法详解
Jan 12 Javascript
微信小程序自定义导航隐藏和显示功能
Jun 13 Javascript
利用JavaScript对中文(汉字)进行排序实例详解
Jun 18 Javascript
JS实现的抛物线运动效果示例
Jan 30 Javascript
vue vantUI实现文件(图片、文档、视频、音频)上传(多文件)
Oct 15 Javascript
Vue的data、computed、watch源码浅谈
Apr 04 Javascript
JavaScript实现移动小精灵的案例代码
Dec 12 Javascript
javascript Number 与 Math对象的介绍
Nov 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
CI框架学习笔记(一) - 环境安装、基本术语和框架流程
2014/10/26 PHP
php递归遍历删除文件的方法
2015/04/17 PHP
php array_slice 取出数组中的一段序列实例
2016/11/04 PHP
Jquery 组合form元素为json格式,asp.net反序列化
2009/07/09 Javascript
JavaScript 基础篇之运算符、语句(二)
2012/04/07 Javascript
让jQuery Mobile不显示讨厌loading界面的方法
2014/02/19 Javascript
js简单抽奖代码
2015/01/16 Javascript
jQuery实现加入购物车飞入动画效果
2015/03/14 Javascript
将html页面保存成图片,图片写入pdf的实现方法(推荐)
2016/09/17 Javascript
jQuery flip插件实现的翻牌效果示例【附demo源码下载】
2016/09/20 Javascript
用jQuery的AJax实现异步访问、异步加载
2016/11/02 Javascript
angular中的http拦截器Interceptors的实现
2017/02/21 Javascript
浅谈Node.js轻量级Web框架Express4.x使用指南
2017/05/03 Javascript
Bootstrap模态框插件使用详解
2017/05/11 Javascript
vue-cli配置文件——config篇
2018/01/04 Javascript
JavaScript中严格判断NaN的方法
2018/02/16 Javascript
webpack 从指定入口文件中提取公共文件的方法
2018/11/13 Javascript
vue-better-scroll 的使用实例代码详解
2018/12/03 Javascript
react native 原生模块桥接的简单说明小结
2019/02/26 Javascript
微信小程序mpvue点击按钮获取button值的方法
2019/05/29 Javascript
jQuery加PHP实现图片上传并提交的示例代码
2020/07/16 jQuery
python获取指定时间差的时间实例详解
2017/04/11 Python
Python 闭包的使用方法
2017/09/07 Python
如何运行.ipynb文件的图文讲解
2019/06/27 Python
Python 多个图同时在不同窗口显示的实现方法
2019/07/07 Python
python flask搭建web应用教程
2019/11/19 Python
python循环嵌套的多种使用方法解析
2019/11/29 Python
pytorch forward两个参数实例
2020/01/17 Python
python如何通过pyqt5实现进度条
2020/01/20 Python
Python如何脚本过滤文件中的注释
2020/05/27 Python
python中id函数运行方式
2020/07/03 Python
python+opencv实现车道线检测
2021/02/19 Python
调用HTML5的Canvas API绘制图形的快速入门指南
2016/06/17 HTML / CSS
巴西儿童时尚购物网站:Dinda
2019/08/14 全球购物
MySQL 全文索引使用指南
2021/05/25 MySQL
PyQt5结合QtDesigner实现文本框读写操作
2021/06/11 Python