ES5
严格模式
除了正常运行模式,ECMAscript5添加了第二种运行模式:"严格模式"(strict mode)。
顾名思义,这种模式使得Javascript在更严格的条件下运行。
设立"严格模式"的目的,主要有以下几个:
消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;
消除代码运行的一些不安全之处,保证代码运行的安全;
提高编译器效率,增加运行速度;
为未来新版本的Javascript做好铺垫。
进入"严格模式"的标志:"use strict";
将 "use strict"; 放在脚本文件的第一行,则整个脚本都将以"严格模式"运行。
<script>
"use strict";
console.log("这是严格模式。");
</script>
将"use strict"放在函数体的第一行,则整个函数以"严格模式"运行。
function strict(){
"use strict";
return "这是严格模式。";
}
严格模式对JS的语法和行为有一些限制:
给未声明的变量赋值直接报错,而不是变成全局变量;
禁止this关键字指向全局对象;
对象不能有重名的属性(IE);
函数不能有重名的参数;
......
ES5支持情况:ie9+, chrome 19+, safari 5+, firefox 4+, opera 12+
ES5新增数组常见方法
indexOf() 方法返回数组中第一个找到的元素位置,如果它不存在则返回-1
forEach() 方法为每个元素执行对应的方法
filter() 方法返回一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素
map() 方法对数组的每个元素进行一定操作后,返回一个新的数组
reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值
array.reduce(function(total, item, index, array), initialValue)
total:初始值, 或者计算结束后的返回值
initialValue:初始值
字符串 string
JavaScript的字符串就是用''或""括起来的字符。
字符串之间使用 + 号进行拼接。
创建字符串:
var str1 = 'abc';
var str2 = new String('abc');
length-属性返回字符串的长度(字符的个数)
str1.length; // 3
可以通过索引访问字符串中的某个字符:str1[0]、str1[1]
字符串常见API
API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数
toLowerCase() 方法将整个字符串转成小写字母
toUpperCase() 方法将整个字符串转成大写字母
indexOf() 方法返回字符串中子串第一处出现的索引值,没有匹配返回-1
lastIndexOf() 方法返回字符串中子串最后出现的索引值,没有匹配返回-1
slice() 方法从已有字符串中提取部分字符,返回新的字符串
var str = str1.slice(start,end);
slice()返回的子串包括start处的字符,但不包括end处字符
split() 方法把一个字符串分割成字符串数组,返回新数组
var str = str1.split('分割符',length);
第一个参数指定分割的符号,第二个参数可选,为返回数组的长度
substr() 方法返回一个从指定位置开始的指定长度的子串
var str = str1.substr(start,length);
参数start必须,字符的起始位置,length参数可选,截取字符串的长度
substring() 方法返回字符串中介于两个指定下标之间的子串
var str = str1.substring(start,end);
包含start处的字符,不包含end处的字符
concat() 方法将两个或多个字符串组合起来,返回一个新的字符串
charAt() 方法返回指定索引位置的字符
replace() 方法用于在字符串中用一些字符替换另一些字符,返回替换后的字符串
var newStr = str.replace('abc','替换abc');
charCodeAt() 方法返回指定索引处字符的unicode编码值
String.fromCharCode(num1,num2,num3......) 方法根据指定的Unicode编码值来返回字符串
var str = String.fromCharCode(65,66,67);// 'ABC'
ASCII、Unicode与编码字符集
编码字符集:(简称字符集,如Unicode、ASCII)
编码字符集,用一个编码值来表示一个字符在库表中的位置,这个值称为字符对应于编码字符集的序号。
最早只有127个字母被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码。
ASCII编码主要针对的是英语,全世界有上百种语言,中国制定了GB2312编码,日本制定了Shift_JIS编码,韩国制定了Euc-kr编码...
各国有各国的标准,就会不可避免地出现冲突,结果就是,在多语言混合的文本中,显示出来会有乱码。
Unicode编码把所有语言都统一到一套编码里,这样就不会再有乱码问题了!
Unicode 编码是一个很大的集合,现在的规模可以容纳100多万个符号。
Unicode 编码开头的 128 个和 ASCII 编码一样。
编码字符集Unicode,有UTF-8、UTF-16、UTF-32等多种字符编码。
Unicode编码汉字对照表:http://www.chi2ko.com/tool/CJK.htm