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

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

前几天,我浏览了一段代码,我对此很好奇,但我不太确定它到底能做什么;

options = options || {};

到目前为止我的想法;设定变量options重视options如果存在,则设置为空对象。

是/不是?


慕仙森
浏览 1526回答 3
3回答

慕哥9229398

这对设置违约函数参数的值,例如:function test (options) {   options = options || {};}如果你打电话test没有争论,options将使用空对象初始化。逻辑OR||运算符将返回其第二个操作数,如果第一个操作数是虚妄.法尔西价值是:0, null, undefined,空字符串(""), NaN,当然还有false.

烙印99

是因为默认模式..代码段中的内容是实现默认模式,它将返回第一个操作数的值,该操作数将生成千真万确值转换为布尔值时。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         -> 10         || 3         -> 3undefined || 3         -> 3NaN       || 3         -> 3""        || "default" -> "default"undefined || undefined -> undefinedfalse     || true      -> truetrue      || false     -> truenull      || "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不知道为什么这个特性没有在其他地方实现。

叮当猫咪

是。该样本相当于:if (options) {     options = options;} else {     options = {};}OR操作符(||)将短路并返回第一个真实值.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript