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 中介者模式实例
Dec 16 Javascript
alert出数组中的随即值代码
Sep 25 Javascript
javascript实现回车键提交表单方法总结
Jan 10 Javascript
JavaScript调用客户端Java程序的方法
Jul 27 Javascript
js数组去重的5种算法实现
Nov 04 Javascript
谈一谈javascript闭包
Jan 28 Javascript
基于jQuery实现表格的排序
Dec 02 Javascript
laydate.js日期时间选择插件
Jan 04 Javascript
详解webpack+gulp实现自动构建部署
Jun 29 Javascript
Node+OCR实现图像文字识别功能
Nov 26 Javascript
node后端服务保活的实现
Nov 10 Javascript
vue+canvas实现拼图小游戏
Sep 18 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
在WIN98下以apache模块方式安装php
2006/10/09 PHP
根据中文裁减字符串函数的php代码
2013/12/03 PHP
使用php显示搜索引擎来的关键词
2014/02/13 PHP
6个超实用的PHP代码片段
2015/08/10 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
2017/07/21 PHP
Laravel框架路由设置与使用示例
2018/06/12 PHP
在IE 浏览器中使用 jquery的fadeIn() 效果 英文字符字体加粗
2011/06/02 Javascript
调试Node.JS的辅助工具(NodeWatcher)
2012/01/04 Javascript
通过一段代码简单说js中的this的使用
2013/07/23 Javascript
jQuery实现购物车多物品数量的加减+总价计算
2014/06/06 Javascript
JS实现带有3D立体感的银灰色竖排折叠菜单代码
2015/10/20 Javascript
基于jquery插件实现拖拽删除图片功能
2020/08/27 Javascript
Vue.js -- 过滤器使用总结
2017/02/18 Javascript
JS变量中有var定义和无var定义的区别以及es6中let命令和const命令
2017/02/19 Javascript
详解Node.js 命令行程序开发教程
2017/06/07 Javascript
解决vue打包css文件中背景图片的路径问题
2018/09/03 Javascript
vue实现的请求服务器端API接口示例
2019/05/25 Javascript
Vue scrollBehavior 滚动行为实现后退页面显示在上次浏览的位置
2019/05/27 Javascript
一些可能会用到的Node.js面试题
2019/06/15 Javascript
解析JS在获取当前月的最后一天遇到的坑
2019/08/30 Javascript
Python中os和shutil模块实用方法集锦
2014/05/13 Python
Python3遍历目录树实现方法
2015/05/22 Python
基于DataFrame筛选数据与loc的用法详解
2018/05/18 Python
在Python中定义一个常量的方法
2018/11/10 Python
python按修改时间顺序排列文件的实例代码
2019/07/25 Python
Django实现celery定时任务过程解析
2020/04/21 Python
Numpy 多维数据数组的实现
2020/06/18 Python
Python爬虫教程知识点总结
2020/10/19 Python
针对HTML5的Web Worker使用攻略
2015/07/12 HTML / CSS
新闻专业大学生找工作的自我评价
2013/10/30 职场文书
药学专业大专生的自我评价
2013/12/12 职场文书
求职简历的自我评价
2014/01/31 职场文书
家长对孩子的感言
2014/03/10 职场文书
承诺书的格式范文
2014/03/28 职场文书
中秋节主持词
2014/04/02 职场文书
协议书与合同的区别
2014/04/18 职场文书