js高级程序设计(第五章【剩余部分】)

36 阅读3分钟
1.search()方法

这个方法会返回第一个匹配到的字符串的索引位置,只会从前往后进行搜索匹配,而不会逆向匹配。它和match()方法一样,只会接受一个参数,可以是字符串、正则表达式以及新建的正则表达式的对象。

const str = "i am a student";
const newStr = str.search("a");
console.log(newStr);  // "2",第一个匹配到的a的字符串的索引位置
2.replace()和split()方法

这是字符串的两个基本方法,前者接受两个参数,分别是被替换的字符串和替换后的字符串。后者可以接受一个或者两个参数,分别是分隔符和限定数组的长度,它会返回一个数组。

const str = "a,b,c";
const strArr = str.split(",");
console.log(strArr);  //  ["a", "b", "c"],返回一个数组

// 限定返回数组的长度
const strArr2 = str.split(",", 2);
console.log(strArr2);  // ["a", "b"],返回长度为2的字符串
3.URI编码方法之encodeURI()和decodeURI()、encodeURIComponent()和decodeURIComponent()方法的差异
encodeURI()encodeURIComponent()
它不会对本身属于URI的特殊字符进行编码,例如:冒号、斜线、井号、问号。它会对发现的任何非标准的特殊字符进行编码
decodeURI()decodeURIComponent()
它只会对encodeURi()方法编码的字符进行解码它只会对encodeURIComponent()方法编码的字符进行解码

注:一般我们多会在业务场景中使用encodeURIComponent(),因为我们一般都是对字符串的参数进行编码,而不是对基础的URI进行编码,而且,它会对所有特殊字符进行编码,相对encodeURI()方法,在功能性上就有了很大的扩展。

4.eval()方法

这个方法在浏览器的js调试平台中使用过,今天有了解了一下,真是强大啊!个人认为,它做的最厉害的一件事情就是将字符串转换为真正执行的代码。它接受一个参数,即字符串参数。(这种方法已经不)

eval("var test = 'myTest';");
console.log(test);  // "myTest",还可以在eval方法之外访问在内部创建的变量,不过在严格模式下行不  						  通,会报错的

const test = "a";
eval("alert(test);");  // "a",eval()方法还可以引用包含这个执行环境中的变量或者方法,即访问外部							变量
5.Math对象中常用方法的一些总结
  • random():这个方法是最常用的,它的范围是[0, 1),一般用在模拟随机数的场景中

  • max()、min():这两个方法一般是用来比较数值的最大数和最小数,他可以接受任意多的数值参数

    const minNumber = Math.min(4, 3, 30, 45);
    console.log(minNumber);  // 3
    const maxNumber = Math.max(4, 3, 30, 45);
    console.log(maxNumber);  // 45
    
    // 延伸一下:如果想拿到数组中的最大或者最小值呢?是不是第一反应就是自己写一个方法呢?刚刚在这里看了个小技巧的方法,牛逼!!!
    const arr = [1, 3, 76, 5];
    const maxValue = Math.max.apply(Math, arr);  // 这里的调用了max方法的继承方法,因为它的第           												 二个参数是一个数组,确实很机智,很难想        												到,而且第一个参数的环境对象正确设置为了												Math对象
    console.log(maxValue);  // 76,去数组中的最小值的方法也是类似
    

    注意:一定要正确设置apply方法的第一个参数的环境对象。

  • ceil()、floor()、round()方法:这三个方法都是对数值进行舍入操作的方法,第一个是向上舍入、第二个是向下舍入,第三个是实现的四舍五入的操作,它们返回的都是进行舍入操作最接近的整数

    const a = Math.ceil(11.1);  // 12,向上舍入
    const b = Math.floor(11.1);  // 11,向下舍入
    const c = Math.round(11.5); // 12,四舍五入操作
    
    // 负数的执行也一样,但还是容易混淆
    const d = Math.ceil(-11.1);   // -11,向上舍入
    const e = Math.floor(-11.1);  // -12,向下舍入
    const f = Math.round(-11.5);  // -12,四舍五入操作
    

😆😆😆