js中给变量赋值的表达式是真是假啊

var handles = this._handles || (this._handles = {})
在这个表达式中this._handles这个变量何时为真,何时为假啊this._handles = {}还有这个复制表达式到底是真是假啊,这个语句到底想表达什么?

阅读 4.5k
6 个回答

这句的意思是:
1,声明变量handles,它先取this._handles的值
2,如果this._handles是假值(不存在),则将this._handles设为一个{}
3,再将this._handles赋给变量

其实就是先判断this._handles是否有值,没有值就赋值,最后赋给变量

你先看=右边的部分,思路就清晰了

如果this._handles为真,则取this._handles的值,否则则给this._handles赋值为空的Object{}

这个表达式的意思是:

this._handlesnull或者undefined或者0或者false或者空字符串的时候,
this._handles赋值为{},并且将{}也赋值给var handles

this._handles不为null并且undefined并且0并且false并且空字符串的时候,
直接把this_handles的值赋值给var handles

1楼正解,了解一下短路求值就清楚了。
图片描述

this._handles 为假值(0, undefind, null, false) 时,为 false,反之为 true

|| 的作用是,如果前面的表达式为真就取前面的值,否则计算后面的。

(表达式)的作用是执行其中的表达式并返回值,如果括号中有多个表达式(如:(a=1,b=2))就返回最后一个表达式的值。

整个表达式的作用是:如果this._handles为真值,就把它的值赋给handles;如果为假值,就初始化为一个对象,并把值赋值handles

var handles;
if (this._handles) {
    handles = this._handles;
} else {
    this._handles = {};
    handles = this._handles;
}

就是上面这段代码的意思,写成一行要简洁一点。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题