网站首页 > 技术文章 正文
一、变量
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!';
猜你喜欢
- 2025-07-27 抛弃立即执行函数 (IIFE),拥抱现代 JavaScript 块级作用域
- 2025-05-05 28.ECMAScript 标准深度解析(何为ecmascript)
- 2025-05-05 Vite 性能篇:掌握这些优化策略,一起纵享丝滑!
- 2025-05-05 前端常见20道高频面试题深入解析(前端面试题目100及最佳答案)
- 2025-05-05 2025 年 Object 和 Map 如何选择?
- 2025-05-05 学习ES6- 入门Vue(大量源代码及笔记,带你起飞)
- 2025-05-05 JavaScript去除数组重复元素的几种方法
- 2025-05-05 AI 自我升级神操作,难道真要开启 “天网” 序章?
- 2025-05-05 JavaScript 数组去重方法总结(js 数组去重的四种方法)
- 2025-05-05 20 个让人惊叹的 JavaScript 单行代码技巧,效率瞬间提升
- 08-06中等生如何学好初二数学函数篇
- 08-06C#构造函数
- 08-06初中数学:一次函数学习要点和方法
- 08-06仓颉编程语言基础-数据类型—结构类型
- 08-06C++实现委托机制
- 08-06初中VS高中三角函数:从"固定镜头"到"360°全景",数学视野升级
- 08-06一文讲透PLC中Static和Temp变量的区别
- 08-06类三剑客:一招修改所有对象!类方法与静态方法的核心区别!
- 1524℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 663℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 530℃MySQL service启动脚本浅析(r12笔记第59天)
- 494℃启用MySQL查询缓存(mysql8.0查询缓存)
- 493℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 481℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 463℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 461℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- windowsscripthost (69)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (70)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)