18

我在 Javascript 中看到了这样的内容:

   function name (secret) {
          secret = secret || {};

我在任何地方都找不到究竟是什么意思秘密=秘密|| {};

这是否意味着使用传递的参数或对象的值创建全局变量?

你什么时候使用它?什么时候没有参数通过?

4

1 回答 1

26

这是什么意思

如果变量secret是假的(以下之一):

  • false
  • 0
  • ''(空字符串)
  • null
  • undefined
  • NaN

..然后将其设置为{}(一个空对象 - 它与 相同new Object())。


替代代码

也可以这样写:

if (!secret) secret = {};

但由于它更长,大多数人更喜欢上面的。


为什么?

此解决方案很有用,因为 javascript 没有默认函数参数。

例如,PHP 中的示例可能如下所示:

<?php
    function foo($bar = 'default') {
        echo $bar;
    }
?>

在 JS 中可能

function foo(bar) {
    bar = bar || 'default';
    console.log(bar);
}
foo(); //default
foo(NaN); //default
foo(undefined); //default
foo(null); //default
foo(false); //default
foo(0); //default
foo(''); //default
foo('something'); //something
foo(12); //12
foo(1.2); //1.2

如果我只想设置默认值,如果没有设置其他内容怎么办?

如果你只想检查没有值(没有假值),那么你可以使用typeofJS 中的函数:

function foo(bar) {
    if (typeof bar == 'undefined') bar = 'default';
    console.log(bar);
}
foo(); //default
foo(undefined); //default
foo(NaN); //NaN
foo(null); //null
foo(false); //false
foo(0); //0
foo(''); //(empty string)
foo('something'); //something
foo(12); //12
foo(1.2); //1.2
于 2012-10-22T17:06:51.277 回答