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

  • 时间:
  • 浏览:1
  • 来源:大发快3官方网址—大发快3APP下载

好应用应用程序员web前端分享js技巧和js中其他常见的陷阱。

}

new Foo('dog').asyncGreet()

以后我说应用应用程序会崩溃,其他 报错:Cannot read property ‘name’ of undefined。

class Foo {

let s = "bob"

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

replaced === "lob" // 只会替换掉第有有好几个 b

s === "bob" // 其他 s的值无需变

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

我喜欢使用bind函数来处里问題:

}

有一种生活 办法:

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

当然,还有而是解法。这名种生活 是我最喜欢的!

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

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

typeof 1 === number // true

// 其他 ....

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

以后会判断有有好几个 变量var是与非 数组,你需要使用Array.isArray(var)。

这是有有好几个 经典的JavaScript面试题:

1、以后第16行的geet这麼 在正确的环境下执行。当然,就有 而是办法处里这名BUG!

然而….,new Date(2016, 1, 1)无需在1900年的基础添加2016,而其他表示2016年。

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

new Date()的使用办法有:

使用let而就有 var。备注:需要参考Fundebug的另一篇博客 ES6之”let”能替代”var”吗?

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

asyncGreet() {

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

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

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

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

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

asyncGreet () {

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

}

曾经会确保greet会被Foo的实例调用,而就有 局部的函数的this。

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

class Foo {

// 哪此需要

'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]是有有好几个 不同的数组,其他它们的元素碰巧相同。其他 ,也能了简单的通过===来判断。

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

以后你想正确的排序,应该曾经做:

}

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

2、以后你无需greet永远无需绑定到错误的作用域,让他在构造函数上方使用bind来绑 。

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