JavaScript中一些被忽略的参数

2018-08-17
JavaScript
3479

JavaScript 一些常用的函数,经常忽略它的一些有用的参数,这里罗列其中的几个

numObj.toString

numObj.toString 方法,显而易见是将数组转化为字符串。但是很多人不知道它还可以接收一个参数,指定基数,一个2~36的整数,表示将数字转化为几进制,默认为10进制,超出范围会抛出RangeError 错误

Math.random().toString()
// "0.761497766691869"
Math.random().toString(16)
// "0.35035cc41c08d"

var x = 6;
x.toString(2) // 110
(6).toString(2)  // 110

这里不能直接写 6.toString(), 这是因为:当引擎开始解析数字的时候,. 会优先考虑为小数点,而不是运算符,小数点后面不是数字,导致解析错误。

setTimeout

setTimeout 之前知道它能接收两个参数,第一个回调数据,第二个延时时间。除了前两个参数,setTimeout还允许添加更多的参数。它们将被传入推迟执行的函数(回调函数)。这个参数有什么用呢,来看一个例子

for (var i = 0; i < 5; i++) {
    setTimeout(function() {
        console.log(i);
    }, 1000);
}

这段代码,熟悉js的都知道,会连续打出5个5。然后就有人要问了,怎么把i传进去,输出0~4啊,这里,就可以利用第三个参数,传入回调函数。代码如下:

for (var i = 0; i < 5; i++) {
    setTimeout(function(index) {
        console.log(index);
    }, 1000, i);
}

OK,上面代码很简单的解决了很多人的痛点,ps, 如果每隔1s打印一次,再改一次:

for (var i = 0; i < 5; i++) {
    setTimeout(function(index) {
        console.log(index);
    }, 1000 * i, i);
}

setInterval 同理。

持续更新中。