python中options是什么意思_Javascript中"options = options || {}"的含义是什么?

Filip Roséen..

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 -> "!!"

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

什么时候有用?

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

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等)的人想知道为什么这个功能没有在其他地方实现.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值