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应该怎样学
Apr 16 Javascript
用js+iframe形成页面的一种遮罩效果的具体实现
Dec 31 Javascript
ExtJS中设置下拉列表框不可编辑的方法
May 07 Javascript
javascript中的遍历for in 以及with的用法
Dec 22 Javascript
jQuery实现瀑布流的取巧做法分享
Jan 12 Javascript
基于jQuery和CSS3制作数字时钟附源码下载(jquery篇)
Nov 24 Javascript
angular2使用简单介绍
Mar 01 Javascript
BootStrap智能表单实战系列(九)表单图片上传的支持
Jun 13 Javascript
使用jQuery加载html页面到指定的div实现方法
Jul 13 Javascript
JS中的三个循环小结
Jun 20 Javascript
Vue.set()动态的新增与修改数据,触发视图更新的方法
Sep 15 Javascript
如何检测JavaScript中的死循环示例详解
Aug 30 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
第六节--访问属性和方法
2006/11/16 PHP
php数组函数序列之in_array() - 查找数组中是否存在指定值
2011/11/07 PHP
使用php批量删除数据库下所有前缀为prefix_的表
2014/06/09 PHP
Yii2 中实现单点登录的方法
2018/03/09 PHP
php 与 nginx 的处理方式及nginx与php-fpm通信的两种方式
2018/09/28 PHP
jquery表单验证使用插件formValidator
2012/11/10 Javascript
jQuery函数的等价原生函数代码示例
2013/05/27 Javascript
jquery判断RadioButtonList和RadioButton中是否有选中项示例
2013/09/29 Javascript
jQuery添加/改变/移除CSS类及判断是否已经存在CSS
2014/08/20 Javascript
JavaScript 事件绑定及深入
2015/04/13 Javascript
你有必要知道的25个JavaScript面试题
2015/12/29 Javascript
javascript实现简单的全选和反选功能
2016/01/05 Javascript
AngularJS基础 ng-non-bindable 指令详细介绍
2016/08/02 Javascript
jQuery学习笔记之回调函数
2016/08/15 Javascript
JS+HTML5实现上传图片预览效果完整实例【测试可用】
2017/04/20 Javascript
vue-cli + sass 的正确打开方式图文详解
2017/10/27 Javascript
JS简单实现点击跳转登陆邮箱功能的方法
2017/10/31 Javascript
vuejs项目打包之后的首屏加载优化及打包之后出现的问题
2018/04/01 Javascript
JS学习笔记之原型链和利用原型实现继承详解
2019/05/29 Javascript
Python处理JSON时的值报错及编码报错的两则解决实录
2016/06/26 Python
简单谈谈Python中函数的可变参数
2016/09/02 Python
Python 调用 zabbix api的方法示例
2019/01/06 Python
python实现给微信指定好友定时发送消息
2019/04/29 Python
python实现微信小程序用户登录、模板推送
2019/08/28 Python
python将邻接矩阵输出成图的实现
2019/11/21 Python
python数据化运营的重要意义
2019/11/25 Python
Python基本类型的连接组合和互相转换方式(13种)
2019/12/16 Python
乌克兰时尚鞋子和衣服购物网站:Born2be
2018/05/24 全球购物
毕业生文员求职信
2013/11/03 职场文书
单位提档介绍信
2014/01/17 职场文书
高一物理教学反思
2014/01/24 职场文书
个人自我剖析材料
2014/02/07 职场文书
党员入党表决心的话
2014/03/11 职场文书
2015年世界无烟日演讲稿
2015/03/18 职场文书
2015年度女工工作总结
2015/10/22 职场文书
SQL Server表分区删除详情
2021/10/16 SQL Server