JavaScript之String

1. ES5严格模式

  1.1 严格模式的引入

     严格模式是从 ES5 进入标准的,主要目的有以下几个:

明确禁止一些不合理、不严谨的语法,减少 JavaScript 语言的一些怪异行为;

增加更多报错的场合,消除代码运行的一些不安全之处,保证代码运行的安全;

提高编译器效率,增加运行速度。 为未来新版本的 JavaScript 语法做好铺垫。

      总之,严格模式体现了 JavaScript 更合理、更安全、更严谨的发展方向。

     进入严格模式的标志,是一行字符串use strict。
     “use strict”;

 严格模式的好处:规避了js语法当中的一些不合理,不严谨之处,提高了js引擎的编译效率,为后续版本做铺垫

注:严格模式可以用于整个脚本,也可以只用于单个函数。

  1.2  严格模式

 1. 变量声明 (必须要使用var)

正常模式中,如果一个变量没有声明就赋值,默认是全局变量。严格模式禁止这种用法,严格模式下,变量都必须先声明,然后再使用。 

2.禁止使用with

3.设立eval作用域

eval()会把参数当成js代码解析 

4.函数中的this指向问题

正常模式下,函数内部的this可能会指向全局对象(window),严格模式禁止这种用法,避免无意间创造全局变量。 

(在普通模式下,this谁调用指向谁) 

5.删除变量

正常模式下,删除一个对象的属性 delete ;在严格模式下,不能通过delete来删除var定义的变量。

6.函数参数不能重名

7.八进制字面量表示法

禁止八进制的前缀0表示法:正常模式下,整数的第一位如果是0,表示这是八进制数,比如0100等于十进制的64。严格模式禁止这种表示法,整数第一位为0,将报错。 

.8.arguments不追踪参数变化

2. ES5新增数组方法

1. indexOf 

indexOf方法返回给定元素在数组中第一次出现的位置,如果没有出现则返回-1。

2. forEach

forEach方法与map方法很相似,也是对数组的所有成员依次执行参数函数。但是,forEach方法不返回值,只用来操作数据。这就是说,如果数组遍历的目的是为了得到返回值,那么使用map方法,否则使用forEach方法。 forEach的用法与map方法一致,参数是一个函数,该函数同样接受三个参数:当前值、当前位置、整个数组。 

注意,forEach方法无法中断执行,总是会将所有成员遍历完。如果希望符合某种条件时,就中断遍历,要使用for循环。

3. map

将数组的所有成员依次传入参数函数,然后把每一次的执行结果组成一个新数组返回。

map方法接受一个函数作为参数。该函数调用时,map方法向它传入三个参数:当前成员、当前位置和数组本身。 

4. filter

filter方法用于过滤数组成员,满足条件的成员组成一个新数组返回。 它的参数是一个函数,所有数组成员依次执行该函数,返回结果为true的成员组成一个新数组返回。该方法不会改变原数组。

filter方法的参数函数可以接受三个参数:当前成员,当前位置和整个数组。 

5. some

6. every

some(),every() 这两个方法返回一个布尔值,表示判断数组成员是否符合某种条件。 它们接受一个函数作为参数,所有数组成员依次执行该函数。该函数接受三个参数:当前成员、当前位置和整个数组,然后返回一个布尔值。

some方法是只要一个成员的返回值是true,则整个some方法的返回值就是true,否则返回false。

every方法是所有成员的返回值都是true,整个every方法才返回true,否则返回false。 

7. reduce(对数组中的所有元素调用指定的回调函数。该回调函数的返回值为累积结果,并且此返回值在下一次调用该回调函数时作为参数提供。)

3. String

   3.1 字符串的创建方式

var s1 = 'abc';

var s2 = new String('abc');

typeof s1 // "string" typeof s2 // "object"

上面代码中,变量s1是字符串,s2是对象。

   3.2 字符串的常见方法

1. charAt

charAt方法返回指定位置的字符,参数是从0开始编号的位置。 

2. indexOf

indexOf方法用于确定一个字符串在另一个字符串中第一次出现的位置,返回结果是匹配开始的位置。如果返回-1,就表示不匹配。 

3. substring

substring方法用于从原字符串取出子字符串并返回,不改变原字符串,跟slice方法很相像。

它的第一个参数表示子字符串的开始位置,第二个位置表示结束位置(返回结果不含该位置)。

'JavaScript'.substring(0, 4) // "Java"

如果省略第二个参数,则表示子字符串一直到原字符串的结束。

'JavaScript'.substring(4) // "Script"

如果第二个参数大于第一个参数,substring方法会自动更换两个参数的位置。 

4. slice

slice方法用于从原字符串取出子字符串并返回,不改变原字符串。

它的第一个参数是子字符串的开始位置,第二个参数是子字符串的结束位置(不含该位置)。

'JavaScript'.slice(0, 4) // "Java"

如果省略第二个参数,则表示子字符串一直到原字符串结束。

'JavaScript'.slice(4) // "Script"

如果参数是负值,表示从结尾开始倒数计算的位置,即该负值加上字符串长度。

'JavaScript'.slice(-6) // "Script"

'JavaScript'.slice(0, -6) // "Java"

'JavaScript'.slice(-2, -1) // "p"

如果第一个参数大于第二个参数,slice方法返回一个空字符串。 

5. substr

substr方法用于从原字符串取出子字符串并返回,不改变原字符串,跟slice和substring方法的作用相同。

substr方法的第一个参数是子字符串的开始位置(从0开始计算),第二个参数是子字符串的长度。

'JavaScript'.substr(4, 6) // "Script"

如果省略第二个参数,则表示子字符串一直到原字符串的结束。

'JavaScript'.substr(4) // "Script"

如果第一个参数是负数,表示倒数计算的字符位置。如果第二个参数是负数,将被自动转为0,因此会返回空字符串

6. split

split方法按照给定规则分割字符串,返回一个由分割出来的子字符串组成的数组。 

7. replace

replace方法用于替换匹配的子字符串,一般情况下只替换第一个匹配(除非使用带有g修饰符的正则表达式)。 

原文地址:https://www.cnblogs.com/a-peppa-pig/p/9460167.html