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

  • 时间:
  • 浏览:1
  • 来源:幸运飞艇APP下载_幸运飞艇APP官方

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

2、可能性要是我greet永远我越多 绑定到错误的作用域,让我在构造函数底下使用bind来绑 。

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嘛?

let s = "bob"

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

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

s === "bob" // 要是s的值我越多 变

可能性你想把所有的b都替换掉,要使用正则:

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

1、可能性第16行的geet那末 在正确的环境下执行。当然,全部全是好多好多 办法除理你是什么 BUG!

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

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

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

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

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

asyncGreet () {

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

}

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

}

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

class Foo {

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

当然,还有好多好多 解法。这你是什么 是我最喜欢的!

class Foo {

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

我喜欢使用bind函数来除理哪些的问題:

}

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

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

// 哪些可不可不可不后能

'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]是另有一一还还有一个不同的数组,要是它们的元素碰巧相同。要是,那末 简单的通过===来判断。

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

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

有你是什么 办法:

}

new Foo('dog').asyncGreet()

可能性你说歌词 线程池会崩溃,要是报错:Cannot read property ‘name’ of undefined。

然而….,new Date(2016, 1, 1)我越多 在1900年的基础添加2016,而要是表示2016年。

new Date()的使用办法有:

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

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

typeof 1 === number // true

// 要是....

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

可能性要判断另有一一还还有一个变量var是算不算不算数组,你还要使用Array.isArray(var)。

asyncGreet() {

可能性你想正确的排序,应该要是做: