• 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修饰符的正则表达式)。 

  • 相关阅读:
    poj 3253 Fence Repair (优先队列,哈弗曼)
    容斥原理 (转载)
    poj 1088 滑雪 DP(dfs的记忆化搜索)
    饭卡 01背包 + 贪心
    N分之一 竖式除法模拟
    poj2325 大数除法+贪心
    优先队列重载运算符< 以及初始化列表
    POJ 2718 Smallest Difference(贪心 or next_permutation暴力枚举)
    HASH算法
    字符串匹配算法——KMP算法
  • 原文地址:https://www.cnblogs.com/a-peppa-pig/p/9460167.html
Copyright © 2020-2023  润新知