ES5扩展内容
严格模式
- 启动严格模式:使用’use strict’
- 要求:必须放在作用域的开头部分。
- 严格模式的影响
- 必须使用关键字声明变量
- 函数中的形参名不允许重复
- 函数中形参值的改变不再影响arguments中的值。
- 取消了arguments中的callee方法
- 取消了解析对象的with方法
- 取消了八进制
- 新增了关键字eval 和 arguments
- 好处:使语法更加规范,减少编程中的错误。
数组新增方法
- indexOf(元素,start) : 查找元素在数组中第一次出现的下标位置,如果没有找到,则返回 -1. 第二个参数决定了从哪个下标开始向后查找。
var arr = [1,2,3,2,4,2,5];
console.log(arr.indexOf(2)); //1
console.log(arr.indexOf(2,2)); //3
console.log(arr.indexOf(8)); //-1
- lastIndexOf(元素,start) : 查找元素在数组中从后向前找第一次出现的下标位置,如果没有找到,则返回-1;第二个参数决定了从哪个下标开始向前查找。
var arr = [1,2,3,2,4,2,5];
console.log(arr.lastIndexOf(2)); //5
console.log(arr.lastIndexOf(2,1)); //1
console.log(arr.lastIndexOf(8)); //-1
- forEach(function(value,index,array){}) //遍历数组
var arr = [1,2,3,4,5];
arr.forEach(function(value,index,array){
console.log('下标:' + index,'元素:' + value,array);
})
- map(function(value,index,array){return …}) 映射、遍历数组,返回处理后的数组
var arr = [1,2,3,4,5];
var list = arr.map(function(value,index,array){
return value + 2;
})
console.log(arr,list);
- some(function(value,index,array){return …}) : 遍历数组中每一个元素进行判断条件,如果有一个元素条件为true,则发生短路,退出循环,返回true。如果所有的元素条件都是false,那么最后返回false.
var arr = [90,99,88,97,100];
//如果数组中的元素有一个符合,则返回true,且停止循环
var bool = arr.some(function(value){
console.log(value);
return value < 90;
})
console.log(bool); //true
- every(function(value,index,array){return …}) : 遍历数组中每一个元素进行判断条件,如果有一个元素条件为false,则发生短路,退出循环,返回false. 如果所有的元素条件都是true,那么最后返回true
var arr = [90,99,88,97,100];
var bool = arr.every(function(value){
console.log(value);
return value >= 90;
})
console.log(bool); //false
- filter(function(value,index,array){return …}) : 过滤功能,则符合条件的元素返回来,返回的是一个数组。
var arr = [90,99,88,97,100];
var list = arr.filter(function(value){
return value < 90;
})
console.log(list); //[88]
- reduce(function(prev,next,index,array){return …}) : 归并
/*
1. 如果reduce没有设置第二个参数时:prev 的是初值是数组中第一个元素。从第二次循环开始,prev中放置的是归并后的结果。
next 永远取的是下一个数组元素。
2. 如果reduce设置了第二个参数时: prev 的是初值是第二个参数。从第二次循环开始,prev中放置的是归并后的结果。
next 永远取的是下一个数组元素。
*/
var arr =[1,2,3,4,5]
var sum = arr.reduce(function(prev,next){
console.log(prev,next);
return prev + next;
},0)
console.log(sum); //15
String内置对象
如何创建String对象
- 字面量方式: ‘’ “”
- 构造函数方式: new String()
属性
- length : 表示字符串的长度。
方法(查、替、截、转) (字符串中的方法都不会改变原串)
查
- indexOf(‘字符串’,start) 查找子串在父串中第一次出现的下标位置,如果没有找到,则返回 -1. 第二个参数决定了从哪个下标开始向后查找。
var str = 'how do you do';
console.log(str.indexOf('do')); //4
console.log(str.indexOf('do',5)); //11
console.log(str.indexOf('de')); // -1
- lastIndexOf(‘字符串’,start) 查找子串在父串中从后向前找第一次出现的下标位置,如果没有找到,则返回-1;第二个参数决定了从哪个下标开始向前查找。
var str = 'how do you do';
console.log(str.lastIndexOf('do')); //11
console.log(str.lastIndexOf('do',5)); //4
console.log(str.lastIndexOf('de')); // -1
- charAt(index) : index-下标 查找指定下标位置的字符是什么。
var str = 'how do you do';
console.log(str.charAt(4)); //'d'
//遍历字符串
for(var i = 0,len = str.length;i < len;i ++){
console.log(str.charAt(i));
}
- charCodeAt(index) : 查找指定下标位置的字符编码是什么?
替
- replace(旧串,新串) :替换字符串
var str = 'how do you do';
console.log(str.replace('do','de')); //'how de you do'
//如何替换全部?
while(str.indexOf('do') !== -1){
str = str.replace('do','de');
}
console.log(str);
截 : 截取部分字符串
- substring(start,end)
支持参数互换的,总是从小的下标截取到大的下标
- substr(start,length)
截取指定长度的字符串
- slice(start,end)
支持参数为负数
var str = 'how do you do';
console.log(str.substring(4,6)); //'do'
console.log(str.substr(4,6)); //'do you';
console.log(str.slice(4,6)); //'do'
console.log(str.substring(6,4)); //'do'
console.log(str.slice(6,4)); //''
console.log(str.substring(-6,-4)); //''
console.log(str.slice(-6,-4)); //'yo'
转
- toUpperCase() : 将小写字母转为大写字母
- toLowerCase() : 将大写字母转为小写字母
- split(‘切割符’,length) : 将字符串转为数组
var str = 'How Are You?';
console.log(str.toUpperCase()); //'HOW ARE YOU'
console.log(str.toLowerCase()); //'how are you'
console.log(str.split(' ')); // ['How','Are','You']
console.log(str.split(' ',20)); //['How','Are','You']
静态方法
- String.fromCharCode(编码) : 根据编码返回字符
var str = '千锋教育';
for(var i = 0,len = str.length;i < len;i ++){
console.log(String.fromCharCode(str.charCodeAt(i) + 1));
}
字符集的故事
GB2312 简体中文
GB18030 简体中文
GBK 简体中文
ISO unicode编码 utf-8 utf-16 utf-32
中文: 0x4e00 ~ 0x9fa5
19968 ~ 40869 == 20902 回文数字