为了账号安全,请及时绑定邮箱和手机立即绑定

在Javascript中,“Options=Options连{}”是什么意思?

在Javascript中,“Options=Options连{}”是什么意思?

慕仙森 2019-07-02 11:15:32
在Javascript中,“Options=Options连{}”是什么意思?前几天,我浏览了一段代码,我对此很好奇,但我不太确定它到底能做什么;options = options || {};到目前为止我的想法;设定变量options重视options如果存在,则设置为空对象。是/不是?
查看完整描述

3 回答

?
慕哥9229398

TA贡献1877条经验 获得超6个赞

这对设置违约函数参数的值,例如:

function test (options) {
  options = options || {};}

如果你打电话test没有争论,options将使用空对象初始化。

逻辑OR||运算符将返回其第二个操作数,如果第一个操作数是虚妄.

法尔西价值是:0nullundefined,空字符串(""), NaN,当然还有false.


查看完整回答
反对 回复 2019-07-02
?
烙印99

TA贡献1829条经验 获得超13个赞


是因为默认模式..

代码段中的内容是实现默认模式,它将返回第一个操作数的值,该操作数将生成千真万确值转换为布尔值时。


var some_data   = undefined;

var some_obj_1  = undefined;

var some_obj_2  = {foo: 123};


var str = some_data || "default";

var obj = some_obj1 || some_obj2  || {};


/* str == "default", obj == {foo: 123} */

以上内容基本上相当于执行以下更详细的备选方案:


var str = undefined;

var obj = undefined;


if (some_data) str = some_data;

else           str = "default";


if      (some_obj1) obj = some_obj1;

else if (some_obj2) obj = some_obj2;

else                obj = {};

逻辑OR运算符产生值的示例:


1         || 3         -> 1

0         || 3         -> 3

undefined || 3         -> 3

NaN       || 3         -> 3

""        || "default" -> "default"

undefined || undefined -> undefined

false     || true      -> true

true      || false     -> true

null      || "test"    -> "test"

undefined || {}        -> {}

{}        || true      -> {}


null || false     || {} -> {}

0    || "!!"      || 9  -> "!!"

如您所见,如果未找到匹配项,则最后一个操作数的值为产生值。


这什么时候有用?

有几种情况,但最流行的情况是设置函数参数的默认值,如下所示:


function do_something (some_value) {

  some_value = some_value || "hello world";


  console.log ("saying: " + some_value);

}


...


do_something ("how ya doin'?");

do_something ();


saying: how ya doin'?

saying: hello world

注记

这是javascript与许多其他流行编程语言的显著区别之一。


操作员||不会隐式地产生一个布尔值但是它保留操作数类型,并产生第一个在布尔表达式中计算为true的类型。


许多来自不同语言的程序员(C,C+,PHP,Python等)一开始就觉得这很令人困惑,当然也有相反的情况。JavaScript (Perl不知道为什么这个特性没有在其他地方实现。


查看完整回答
反对 回复 2019-07-02
?
叮当猫咪

TA贡献1776条经验 获得超12个赞

是。该样本相当于:

if (options) {
    options = options;} else {
    options = {};}

OR操作符(||)将短路并返回第一个真实值.


查看完整回答
反对 回复 2019-07-02
  • 3 回答
  • 0 关注
  • 1520 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信