es5的data语法_es5/es6中新增的方法

本文详细介绍了ES5中新增的数组方法,如forEach、map、filter等,以及字符串方法如trim,和对象方法如Object.keys和Object.defineProperty。此外,还探讨了ES6中的let、const、解构赋值、箭头函数、剩余参数等新特性,帮助读者更好地理解和运用这些JavaScript新功能。
摘要由CSDN通过智能技术生成

ES5中的新增方法

ES5 中给我们新增了一些方法,可以很方便的操作数组或者字符串,这些方法主要包括:

数组方法

字符串方法

对象方法

1.1 数组方法

迭代(遍历)方法:forEach()、map()、filter()、some()、every();

array.forEach(function(currentValue, index, arr))

让数组中每个元素都执行一次 fn,相当于 for 循环

不会占用全局变量,结合箭头函数贼舒服

currentValue:当前项的值

index:当前项的索引

arr:当前数组对象本身

array.map(function(currentValue, index, arr))

map() 方法会得到一个新数组, 新数组中包含每次函数调用返回的结果

它返回的是一个新数组

array.filter(function(currentValue, index, arr))

filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素,主要用于筛选数组

注意它直接返回一个新数组

currentValue: 当前项的值

index:当前项的索引

arr:当前数组对象本身

array.some(function(currentValue, index, arr))

some() 方法用于检测数组中的元素是否满足指定条件,即查找数组中是否有满足条件的元素。

它的返回值是布尔值,如果查找到这个元素,就返回true , 如果查找不到就返回false。

如果找到第一个满足条件的元素,则终止循环,不再继续查找。

currentValue: 当前项的值

index:当前项的索引

arr:当前数组对象本身

array.every(function(currentValue, index, arr))

every() 方法检测数组中的所有元素是否满足指定条件。

所有的元素都返回true,结果才是true

1.2 字符串方法

trim() 方法会从一个字符串的两端删除空白字符。

str.trim()

trim() 方法并不影响原字符串本身,它返回的是一个新的字符串。

1.3 对象方法

Object.keys() 用于获取对象自身所有的属性

Object.keys(obj)

效果类似 for…in

返回一个由属性名组成的数组

Object.defineProperty() 定义对象中新属性或修改原有的属性。

Object.defineProperty(obj, prop, descriptor)

obj:必需。目标对象

prop:必需。需定义或修改的属性的名字

descriptor:必需。目标属性所拥有的特性,以对象形式 { } 书写

value: 设置属性的值 默认为undefined

writable: 值是否可以重写。true | false 默认为false

enumerable: 目标属性是否可以被枚举。true | false 默认为 false

configurable: 目标属性是否可以被删除或是否可以再次修改特性 true | false 默认为false

ES6的新增语法

1. let

ES6中新增的用于声明变量的关键字。

let声明的变量只在所处于的块级有效。

if (true) {

let a= 10;

}

console.log(a)//a is not defined

注意:使用 var 声明的变量不具备块级作用域特性,使用 let 关键字声明的变量具有块级作用域,可以防止循环变量变成全局变量。

不存在变量提升

console.log(a); //a is not defined

let a = 20;

暂时性死区

var num = 10;if(true) {

console.log(num);//num is not defined

let num = 20;

}//在if的{}中不会向上一级查找num,因为在这个块级作用域中用了let关键字声明了num,变量num就和{}这个块级进行了整体绑定,所以在声明之前使用它会报错

经典面试题

//题1

var arr =[];for(var i = 0; i < 2; i++) {

arr[i]= function() {

console.log(i);

}

}

arr[0](); //2

arr[1](); //2//解析:变量 i 是全局的,函数执行时输出的都是全局作用域下的 i 值。

//题2

let arr =[];for(let i = 0; i < 2; i++) {

arr[i]= function() {

console.log(i);

}

}

arr[0](); //0

arr[1](); //1//解析:每次循环都会产生一个块级作用域,每个块级作用域中的变量都是不同的,函数执行时输出的是自己上一级(循环产生的块级作用域)作用域下的值。

2. const

const 用于声明常量,常量就是值(内存地址)不能变化的量。

具有块级作用域

if (true) {

const a= 10;

}

console.log(a)//a is not defined

声明常量时必须赋值

const PI; //Missing initializer in const declaration

常量赋值后,值不能修改。

const PI = 3.14;

PI= 100; //Assignment to constant variable.

const ary = [100, 200];

ary[0] = 'a';

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值