ES6

ES6深入浅出之新增的API(下)

Posted by weite122 on 2019-01-25

String.prototype.includes

  • includes() 方法用于判断一个字符串是否包含在另一个字符串中,根据情况返回 true 或 false。

    1
    2
    'Blue Whale'.includes('blue'); // returns false
    与之相同的方法有indexOf,search,match

String.prototype.repeat

  • repeat() 构造并返回一个新字符串,该字符串包含被连接在一起的指定数量的字符串的副本。
1
2
3
4
5
6
7
8
9
10
11
12
13
"abc".repeat(-1) // RangeError: repeat count must be 
positive and less than inifinity
"abc".repeat(0) // ""
"abc".repeat(1) // "abc"
"abc".repeat(2) // "abcabc"
"abc".repeat(3.5)// "abcabcabc" 参数count将会被自动转换成整数.
"abc".repeat(1/0)// RangeError: repeat count must be
positive and less than inifinity

({toString : () => "abc", repeat : String.prototype.repeat})
.repeat(2)

//"abcabc",repeat是一个通用方法,也就是它的调用者可以不是一个字符串对象.

String.prototype.startsWith

  • startsWith()方法用来判断当前字符串是否是以另外一个给定的子字符串“开头”的,根据判断结果返回 true 或 false。可以用indexOf()替代
    1
    2
    3
    4
    5
    6
    var str = "To be, or not to be, that is the question.";
    alert(str.startsWith("To be")); // true
    alert(str.startsWith("not to be")); // false
    alert(str.startsWith("not to be", 10)); // true

    str.indexOf("To be") === 0//true

String.prototype.endsWith

  • endsWith()方法用来判断当前字符串是否是以另外一个给定的子字符串“结尾”的,根据判断结果返回 true 或 false。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var str = "To be, or not to be, that is the question.";

alert( str.endsWith("question.") ); // true
alert( str.endsWith("to be") ); // false
alert( str.endsWith("to be", 19) ); // true

if (!String.prototype.endsWith) {
String.prototype.endsWith = function(search, this_len) {
if (this_len === undefined || this_len > this.length) {
this_len = this.length;
}
return this.substring(this_len - search.length, this_len) === search;
};
}

Number.EPSILON

  • Number.EPSILON 属性表示 1 与Number可表示的大于 1 的最小的浮点数之间的差值。
    1
    2
    3
    4
    5
    6
    7
    var i = 0
    while(Math.abs(i - 1) < Number.EPSILON){
    i += 0.1
    console.log(i)
    if(i>100)break
    }
    console.log('i is 1')

Number.isInteger

  • Number.isInteger() 方法用来判断给定的参数是否为整数。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    function fits(x, y) {
    if (Number.isInteger(y / x)) {
    return 'Fits!';
    }
    return 'Does NOT fit!';
    }

    console.log(fits(5, 10));
    // expected output: "Fits!"

    console.log(fits(5, 11));
    // expected output: "Does NOT fit!"
    function isInt(n){
    return parseInt(n, 10) ==== n
    }

Number.isSafeInteger

  • Number.isSafeInteger() 方法用来判断传入的参数值是否是一个“安全整数”(safe integer)。一个安全整数是一个符合下面条件的整数:

    • can be exactly represented as an IEEE-754 double precision number, and
    • whose IEEE-754 representation cannot be the result of rounding any other integer to fit the IEEE-754 representation.

Number.isFinite

  • Number.isFinite() 方法用来检测传入的参数是否是一个有穷数(finite number)。
    1
    2
    3
    4
    5
    6
    7
    8
    Number.isFinite(Infinity);  // false
    Number.isFinite(NaN); // false
    Number.isFinite(-Infinity); // false

    Number.isFinite(0); // true
    Number.isFinite(2e64); // true

    Number.isFinite('0'); // false, 全局函数 isFinite('0') 会返回 true

Number.isNaN(‘NaN’) // false

  • Number.isNaN() 方法确定传递的值是否为 NaN和其类型是 Number。它是原始的全局isNaN()的更强大的版本。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function typeOfNaN(x) {
    if (Number.isNaN(x)) {
    return 'Number NaN';
    }
    if (isNaN(x)) {
    return 'NaN';
    }
    }

    console.log(typeOfNaN('100F'));
    // expected output: "NaN"

    console.log(typeOfNaN(NaN));
    // expected output: "Number NaN"

Math.acosh

  • Math.acosh()返回一个数字的反双曲余弦值.

Math.hypot

  • Math.hypot() 函数返回它的所有参数的平方和的平方根,即:Math.hypot(3, 4) // 5

Math.imul

  • 该函数返回两个参数的类C的32位整数乘法运算的运算结果.
    1
    2
    3
    4
    5
    Math.imul(2, 4) // 8
    Math.imul(-1, 8) // -8
    Math.imul(-2, -2) // 4
    Math.imul(0xffffffff, 5) //-5
    Math.imul(0xfffffffe, 5) //-10

Math.sign

  • Math.sign() 函数返回一个数字的符号, 指示数字是正数,负数还是零。此函数共有5种返回值, 分别是 1, -1, 0, -0, NaN. 代表的各是正数, 负数, 正零, 负零, NaN。

    1
    2
    3
    4
    5
    6
    7
    8
    Math.sign(3);     //  1
    Math.sign(-3); // -1
    Math.sign("-3"); // -1
    Math.sign(0); // 0
    Math.sign(-0); // -0
    Math.sign(NaN); // NaN
    Math.sign("foo"); // NaN
    Math.sign(); // NaN

Math.trunc

  • Math.trunc() 方法会将数字的小数部分去掉,只保留整数部分。parseInt方法在转换科学计数数字时会直接将他转化成字符串,从而导致数字变成一位数。