JavaScript中一些被忽略的参数
2018-08-17
JavaScript
3499
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
同理。
持续更新中。