2011-05-23 107 views
0

我如何告诉Javascript功能来使用零作为一个变量,如果是空的传递变量?在PHP中,我可以使用以下内容。的Javascript传递一个空的变量

<?php 
    function test($var=0){ 
     echo $var; 
    } 
?> 

因此,这将是$ var设置为0,如果传递的变量是空的。我似乎无法用Javascript解决这个问题。

感谢

回答

4

如果你调用一个方法,无需提供的参数之一(或更多)的值,这些参数会undefined

这样的方法中,你可以测试变量是否定义,如果没有分配给它一个默认值:

function test(arg) { 
    if (typeof(arg) === 'undefined') { 
     arg = "default"; // or whatever default value you want 
    }; 

    // Rest of method 
} 

这不是很优雅,但JavaScript并没有一个很好的本地默认参数句法。

+0

的伟大工程。这是一种耻辱,它并不是非常优雅,但它可以完成这项工作。谢谢! – Doyley 2011-05-23 14:35:17

+1

'var'是一个保留关键字!你的例子会产生一个语法错误。 – 2011-05-23 17:04:35

+0

非常真实的萨尔曼 - 我是镜像PHP示例中的问题,但这不是真正为非法语法的借口!我会马上更新它,谢谢。 – 2011-05-24 08:01:06

1

这应该工作:

function myFunc(var) { 
    if (null == var) 
     var = 0; 
} 
+2

严格,只有工作,因为强制类型转换,这是不完全真实需要什么样的。如果var'没有提供,'var'不是'null',它是'undefined'。即使调用者传递了显式值“null”,这里的代码也会分配默认值,这并不像我所理解的那样。 – 2011-05-23 14:23:10

2

可以使用或操作员要做到这一点有点短;

function myFunc(var) 
{ 
var = var || 0; 
} 
+1

如果'var'是布尔值'false'会怎么样?或者是一个空字符串?或者整数'0'?或*来电者提供的任何其他“真实”值? – 2011-05-23 14:24:36

2

这在很大程度上取决于什么对您来说意味着什么值参数允许有。

一个经常使用的快捷方式是

param = param || 0; 

这将设置param0每当param evaluates to false