好程序员web前端分享js技巧和js中一些常见的陷阱

  • 时间:
  • 浏览:1
  • 来源:5分11选5APP下载_5分11选5APP官方

new Date(1, 1, 1)返回1901年2月1号。

然而….,new Date(2016, 1, 1)不需要在1900年的基础换成2016,而倘若表示2016年。

class Foo {

2、完会你我想要greet永远不需要绑定到错误的作用域,让他在构造函数上面使用bind来绑 。

完会你想正确的排序,应该倘若 做:

接收一另一个多多参数x: 返回1970年1月1日 + x毫秒的值。

有某种 措施:

}

new Foo('dog').asyncGreet()

完会他们说线程池池池会崩溃,完会报错:Cannot read property ‘name’ of undefined。

Math.min() < Math.max() // false

class Foo {

使用let而全部都是var。备注:时需参考Fundebug的另一篇博客 ES6之”let”能替代”var”吗?

}

好线程池池池员web前端分享js技巧和js中许多常见的陷阱。

使用bind函数。备注:时需参考Fundebug的另一篇博客 JavaScript初学者必看“this”

}

3、你也时需使用箭头函数(=>)来正确处理作用域被修改。备注:时需参考Fundebug的另一篇博客 JavaScript初学者必看“箭头函数”。

new Date()的使用措施有:

[1,2,5,10].sort((a, b) => a - b)

const Greeters = []

for (var i = 0 ; i < 10 ; i++) {

Greeters.push(function () { return console.log(i) })

}

Greeters[0]() // 10

Greeters[1]() // 10

Greeters[2]() // 10

我觉得期望输出0,1,2,…,然而实际上却不需要。知道怎么才能 才能 Debug嘛?

"bob".replace(/b/g, 'l') === 'lol'

let s = "bob"

const replaced = s.replace('b', 'l')

replaced === "lob" // 只会替换掉第一另一个多多b

s === "bob" // 完会s的值不需要变

完会你想把所有的b都替换掉,要使用正则:

Greeters.push(console.log.bind(null, i))

当然,还有好多好多 解法。这某种 是我最喜欢的!

asyncGreet() {

不接收任何参数:返回当前时间;

这是一另一个多多经典的JavaScript面试题:

1、完会第16行的geet这麼在正确的环境下执行。当然,全部都是好多好多 措施正确处理某种 BUG!

typeof {} === 'object' // true

typeof 'a' === 'string' // true

typeof 1 === number // true

// 完会....

typeof [] === 'object' // true

完会要判断一另一个多多变量var否是数组,你时需使用Array.isArray(var)。

下面这段代码会输出哪此结果?

我喜欢使用bind函数来正确处理大大问题:

asyncGreet () {

this.someThingAsync().then(this.greet.bind(this))

}

倘若 会确保greet会被Foo的实例调用,而全部都是局部的函数的this。

JavaScript默认使用字典序(alphanumeric)来排序。完会,[1,2,5,10].sort()的结果是[1, 10, 2, 5]。

// 哪此时需

'abc' === 'abc' // true

1 === 1 // true

// 然而哪此不行

[1,2,3] === [1,2,3] // false

{a: 1} === {a: 1} // false

{} === {} // false

完会[1,2,3]和[1,2,3]是一另一个多多不同的数组,倘若它们的元素碰巧相同。完会,这麼简单的通过===来判断。