目录数组
ES5和String2浏览器
1:ES5简介2安全
2:严格模式简介2函数
3:进入严格模式3this
4:如何调用严格模式3编码
5:严格模式改变语法和行为3spa
6:ES5新增数组方法4code
7:字符串7orm
8:声明字符串7对象
9:字符串属性7
12:字符串方法7
应用:9
ASCII码和字符集9
字符串常见API(charCodeAt\fromCharCode\)11
应用:12
综合应用:12
ECMAScript 5.1 (或仅 ES5) 是ECMAScript(基于JavaScript的规范)标准的修正。 与HTML5规范进程本质相似,ES5经过对现有JavaScript方法添加语句和原生ECMAScript对象作合并实现标准化。
除了正常运行模式,ECMAscript 5添加了第二种运行模式:"严格模式"(strict mode)。顾名思义,这种模式使得Javascript在更严格的条件下运行。
设立"严格模式"的目的,主要有如下几个:。
1:消除Javascript语法的一些不合理、不严谨之处,减小一些怪异行为。
2:消除代码运行的一些不安全之处,保证代码运行的安全:。
3:提升编译器效率,增长运行速度。
4:为将来新版本的Javascript作好铺垫。
"严格模式"体现了Javascript更合理、更安全、更严谨的发展方向,包括IE 10在内的主流浏览器,都已经支持它,许多大项目已经开始全面拥抱它。
进入“严格模式”的标志,书写这行语句:"use strict";
老版本的浏览器会把它看成一行普通字符串,加以忽略。
"严格模式"有两种调用方法,适用于不一样的场合。
针对整个脚本文件:将"use strict"放在脚本文件的第一行,则整个脚本都将以"严格模式"运行。若是这行语句不在第一行,则无效,整个脚本以"正常模式"运行。若是不一样模式的代码文件合并成一个文件,这一点须要特别注意。
针对单个函数:将"use strict"放在函数的第一行,则整个函数以"严格模式"运行。
脚本文件的变通写法:由于第一种调用方法不利于文件合并,因此更好的作法是,借用第二种方法,将整个脚本文件放在一个当即执行的匿名函数之中。
严格模式对Javascript的语法和行为,都作了一些改变。
1:全局变量显式声明。
在正常模式中,若是一个变量没有声明就赋值,默认是全局变量。严格模式禁止这种用法,全局变量必须显式声明。所以,严格模式下,变量都必须先用var命令声明,而后再使用。
2:函数形参不容许重复。
3:禁止使用with语句。
4:禁止函数内部this关键字指向全局对象,this指向undefined。
5:函数必须声明在顶层。
未来Javascript的新版本会引入“块级做用域"。为了与新版本接轨,严格模式只容许在全局做用域或函数做用域的顶层声明函数。也就是说,不容许在非函数的代码块内声明函数。
// if(1){function a(){}} else {function a() {}}
ES5新增数组常见方法(indexof/forEach/map/reduce/filter)
1:forEach方法:遍历数组。第二个参数为可选的上下文参数(改变this指向)。
forEach方法中的function回调支持3个参数,第1个是遍历的数组内容;第2个是对应的数组索引,第3个是数组自己。forEach不会遍历空位置的内容。如:[1, , 3],只会遍历1和3。
2:map方法:将数组映射成新数组。回调函数须要有返回值。
3:filter方法:指数组过滤后,返回过滤后的新数组。 filter的callback函数须要返回布尔值true(经过过滤)或false。
4:indexOf方法:返回整数索引值,若是没有匹配(严格匹配),返回-1。 fromIndex可选,表示从这个位置开始搜索,若缺省或格式不合要求,使用默认值0。
5:reduce方法:归并。递归减小。
callback函数接受4个参数:以前值、当前值、索引值以及数组自己。initialValue参数可选,表示初始值。若指定,则看成最初使用的previous值;若是缺省,则使用数组的第一个元素做为previous初始值,同时current日后排一位,相比有initialValue值少一次迭代。
案例:
解析:
说明:
1:由于initialValue不存在,所以一开始的previous值等于数组的第一个元素。
2:从而current值在第一次调用的时候就是2。
3:最后两个参数为索引值index以及数组自己array。
JS中的任何数据类型均可以看成对象来看。因此string既是基本数据类型,又是对象。
var sStr = ‘字符串’;
var oStr = new String(‘字符串’);
length
计算字符串的长度(不区分中英文)。
字符串常见API (charAt\ indexOf\substring\slice\split\replace)
myStr.charAt(num) 等价 myStr[num]
返回在指定位置的字符。
.myStr.indexOf()
返回某个指定的字符串,在字符串中首次出现的位置。若是要检索的字符串值没有出现,则该方法返回 -1。
。
myStr.search()
返回出现的位置,查找不到返回-1。配合正则来用。
myStr.replace(“需替换的字符串”,“替换后的字符串”)
将字符串中的一些字符替换为另一些字符。配合正则使用。
myStr.slice(start,end)
从指定的开始位置,到结束位置(不包括结束位置)的全部字符串。若是不指定结束位置,则从指定的开始位置,取到结尾。注意的是,myStr.slice() 与 myArr.slice() 类似。
myStr.substring(start,end)
从指定的开始位置,到结束位置(不包括)的全部字符串。若是不指定结束位置,则从指定的开始位置,取到结尾。
split("分割位置",[指定返回数组的长度]) 使用分隔符分隔字符串
将一个字符串分割成数组。
toLowerCase()
用于把字符串转换为小写。
toUpperCase()
将字符串转换为大写。
1.敏感词过滤。
//现有敏感词 ‘你妹,fuck,你大爷” ,要求过字符串中的这些词为*** tmp res
2.密码格式要求。
//判断用户的输入是不是纯数字
3.留言过滤。 以下
ASCII:American Standard Code for Information Interchange,美国信息交换标准代码。
Unicode编码:
Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每一个字符设定了统一而且惟一的二进制编码,以知足跨语言、跨平台进行文本转换、处理的要求。 Unicode目前广泛采用的是UCS-2,它用两个字节来编码一个字符。
如汉字"经"的编码是0x7ECF,注意字符码通常用十六进制来 表示,为了与十进制区分,十六进制以0x开头,0x7ECF转换成十进制 就是32463,UCS-2用两个字节来编码字符,两个字节就是16位二进制, 2的16次方等于65536,因此UCS-2最多能编码65536个字符。
GBK编码:
GBK全称《汉字内码扩展规范》(GBK即“国标”、“扩展”汉语拼音的第一个字母,英文名称:Chinese Internal Code Specification)。GBK 向下与GB2312编码兼容,向上支持 ISO 10646.1国际标准,是前者向后者过渡过程当中的一个承上启下的产物。
UTF-8编码:
UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,又称万国码。 UTF-8用1到4个字节Byte编码UNICODE字符。用在网页上能够同一页面显示中文简体繁体及其它语言(如英文,日文,韩文)。
1.myStr.charCodeAt(num)
返回指定位置的字符的Unicode(是字符编码的一种模式)编码。
2.String.fromCharCode()
String的意思就是不能用本身定义的字符串名字来调用,例如定义一个变量字符串 var str="";只能用String来定义调用。接受一个或多个指定的Unicode值,而后返回一个或多个字符串。(把unicode编码转换为字符串)。
1:统计字符串中每一个字符的个数。
1:数字字母混合验证码。4
2:(aabccd)统计每一个字符出现的次数,结果显示 a 二、b 一、c 2,d1,去掉重复的字符,使结果显示 abcd。 分治
Abcd
aabccd