严格模式
1. 所谓严格模式,从字面上就很好理解,即更严格的模式,在这种模式下执行,浏览器会对JS的要求更苛刻。
2. 设立"严格模式"的目的,主要有以下几个:
消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;
消除代码运行的一些不安全之处,保证代码运行的安全;
提高编译器效率,增加运行速度;
为未来新版本的Javascript做好铺垫
3. "严格模式"有两种调用方法,适用于不同的场合。
针对整个脚本文件 针对单个函数
4. 语法和行为改变
全局变量显式声明:严格模式下,变量都必须先用var命令声明,然后再使用。
禁止使用with语句:因为该语句无法在编译时就确定,属性待敌归属哪个对象。
禁止this关键字指向全局对象
函数不能有重名的参数
禁止八进制表示法
禁止使用arguments.callee
ES5新增数组操作方法(ECMAscript3 ECMAscript5 ECMAscript6)
1. 位置方法----indexOf() lastIndexOf()返回要查找的项在数组中的索引位置,没找到的情况下返回-1。(两个参数:要查找的项和(可选的)表示查找起点位置的索引)
indexOf() 方法从数组的开头开始向后查找。
lastIndexOf() 方法则从数组的末尾开始向前查找。
2. 迭代方法(不会改变原数组)
两个参数:
第一个参数:要在每一项上运行的函数
此函数会接收三个参数:数组项的值、该项在数组中的位置、数组对象本身。
第二个参数:(可选的)运行该函数的作用域对象(影响 this 的值)。
every()方法:类似与逻辑与符号的特点。
对数组中的每一项运行给定函数,如果该函数对每一项都返回 true ,则返回 true 。
some()方法:类似与逻辑或符号的特点。
对数组中的每一项运行给定函数,如果该函数对任意一项返回 true ,则返回 true 。
filter() 方法:
对数组中的每一项运行给定函数,返回该函数结果为 true 的项组成的数组。
map() 方法:
对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组
返回就是数组,不考虑true或者false;
forEach() 方法:
对数组中的每一项运行给定函数。这个方法没有返回值
归并方法---reduce() reduceRight()
这两个方法都会迭代数组的所有项,然后构建一个最终返回的值。
reduce() 方法从数组的第一项开始,逐个遍历到最后。
reduceRight() 方法从数组的最后一项开始,向前遍历到第一项。
两个参数:每一项上调用的函数和(可选的)作为归并的初始值。
调用的函数接收 4 个参数:前一个值、当前值、项的索引和数组对象。
包装对象
思考:JavaScript是面向对象的语言,使用”.”操作符可以访问对象的属性和方法,而对于基 本类型(null, undefined, bool, number, string)应该是值类型,没有属性和方法。
概念:使用字符串、数字或布尔值的属性和方法时,创建的临时对象称做包装对象,它只是偶尔用来区分字符串值和字符串对象、数字和数值对象以及布尔值和布尔对象。
过程:只要是引用了字符串的属性和方法,JavaScript就会将字符串值通过new String(s)的方式转为内置对象String(隐式),一旦引用结束,这个对象就会自动销毁。数字和布尔值的处理也类似。null和undefined没有对应对象,所以不是包装对象。
字符串的定义
也可使用 var str = newString("abc"); 注意此刻str为object类型
var str=“abc”;
字符串的属性length---字符串的长度
字符串的方法
charAt(num):返回对应字符串索引的内容。
charCodeAt(num):返回对应的字符串索引的内容的unicode编码
String.fromCharCode(unicode编码);将参数中的unicode编码返回成对应的字符串的内容,多个编码用逗号分隔。
indexOf(‘查找字符’, ’开始位置’):从指定的位置从左往右查找对应的字符,并返回对应字符的位置。如果第二个参数为负数,默认当做0来处理。 没有找到就返回-1。
lastIndexOf(‘查找字符’,’开始位置’):查找顺序是相反,为从后往前找。
replace替换字符串 string.replace("tmd", "*");
split——根据分隔符、拆分成数组
把一个字符串分割成一个数组。通过传递一个参数来分割。参数就是分割字符串的 符号。如果参数为空,也是数组,只有一个数据。第二个参数用来限制数组的长度,多余的切掉。
substring():用来截取字符串的内容
没有参数全部截取。相当于从第0位开始截取。
一个参数代表截取从参数的位置往后的字符串。
两个参数代表截取两个参数之间的字符串,包括第一个参数的位置。
两个参数的时候,当第二个参数小于第一个参数,自动交换位置。
如果是负数,当做0来处理。
substr(start, length); 用来截取字符串的内容
start:开始的索引,如果为负数,从后往前进行截取,包括开始的索引。
length:截取的长度。
toLowerCase、toUpperCase
toUpperCase()转换成大写
toLowerCase()转换成小写
ASCII码和字符集
ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。在计算机中,所有的数据在存储和运算时都要使用二进制数表示,为了统一标准,美国有关的标准化组织就出台了ASCII编码,统一规定了上述常用符号用哪些二进制数来表示。
字符(Character)是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。字符集(Character set)是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同,常见字符集名称:ASCII字符集、GB2312字符集、BIG5字符集、 GB18030字符集、Unicode字符集等。计算机要准确的处理各种字符集文字,需要进行字符编码,以便计算机能够识别和存储各种文字。中文文字数目大,而且还分为简体中文和繁体中文两种不同书写规则的文字,而计算机最初是按英语单字节字符设计的,因此,对中文字符进行编码,是中文信息交流的技术基础。
API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
Math内置对象的常见API
Math.random() Math.floor() Math.ceil() Math.round() Math.sqrt()
Math.abs() Math.max() Math.min() Math.pow() Math.PI
日期对象创建
vardate=new Date(); //Date:构造函数 date:实例(实例对象)
日期处理
getFullYear() setFullYear......