为什么有人会用!!在JavaScript中?

时间:2017-02-12 15:58:55

标签: javascript ecmascript-6

// options
if (options) {
  this.deep = !!options.deep
  this.user = !!options.user
  this.lazy = !!options.lazy
  this.sync = !!options.sync
} else {
  this.deep = this.user = this.lazy = this.sync = false
}

当我试图理解vue.js Watcher时,我看到了这种语法!!options.deep here我完全理解!的含义,但为什么有人想要使用!!true因为它会再次给你true

由于

2 个答案:

答案 0 :(得分:5)

如果变量是布尔值,那么!!不会产生任何影响,但如果变量是数字或其他类型,那么它将被转换为布尔值。

!!false === false
!!true  === true
!!0     === false
!!1     === true
!!x     === Boolean(x)

答案 1 :(得分:3)

!!试图在JavaScript中强制执行布尔值。与Boolean(value)

相同的结果