我总是在JavaScript中处理可选参数,如下所示:
function myFunc(requiredArg, optionalArg){
optionalArg = optionalArg || 'defaultValue';
// Do stuff
}
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法呢?
是否有任何使用||这种情况会失败的情况?
我一直在阅读一堆react代码,我看到这样的东西,我不明白:
handleChange = field => e => {
e.preventDefault();
/// Do something here
}
Run Code Online (Sandbox Code Playgroud) 可能重复:
如何为javascript函数创建参数的默认值
在PHP中:
function func($a = 10, $b = 20){
// if func() is called with no arguments $a will be 10 and $ b will be 20
}
Run Code Online (Sandbox Code Playgroud)
你怎么能用JavaScript做到这一点?
如果我尝试在函数参数中赋值,则会出错
缺少)正式参数后
我正在编写带有可选参数的Javascript函数,我想为可选参数分配一个默认值.如何为其指定默认值?
我以为会是这样,但它不起作用:
function(nodeBox,str = "hai")
{
// ...
}
Run Code Online (Sandbox Code Playgroud) 部署我的Rails应用程序时,我收到以下错误:
rake aborted!
ExecJS::ProgramError: Unexpected token punc «(», expected punc «:» (line: 15, col: 14, pos: 265)
Error
at new JS_Parse_Error (/tmp/execjs20150524-4411-1p45n63js:2359:10623)
at js_error (/tmp/execjs20150524-4411-1p45n63js:2359:10842)
at croak (/tmp/execjs20150524-4411-1p45n63js:2359:19086)
at token_error (/tmp/execjs20150524-4411-1p45n63js:2359:19223)
at expect_token (/tmp/execjs20150524-4411-1p45n63js:2359:19446)
at expect (/tmp/execjs20150524-4411-1p45n63js:2359:19584)
at /tmp/execjs20150524-4411-1p45n63js:2359:28513
at /tmp/execjs20150524-4411-1p45n63js:2359:19957
at expr_atom (/tmp/execjs20150524-4411-1p45n63js:2359:27269)
at maybe_unary (/tmp/execjs20150524-4411-1p45n63js:2359:30019)new JS_Parse_Error ((execjs):2359:10623)
js_error ((execjs):2359:10842)
croak ((execjs):2359:19086)
token_error ((execjs):2359:19223)
expect_token ((execjs):2359:19446)
expect ((execjs):2359:19584)
(execjs):2359:28513
(execjs):2359:19957
expr_atom ((execjs):2359:27269)
maybe_unary ((execjs):2359:30019)
Run Code Online (Sandbox Code Playgroud)
有问题的文件是有效的,它适用于localhost.我也试过rake assests:precompile在localhost上运行,一切都通过了.最后,我试图从文件中删除内容,git push和redeploy - 仍然得到相同的错误.只有完全删除文件并重新部署帮助.
会欣赏任何想法.
我有这个代码:
var phrase = function (variable, defaultPhrase) {
if (typeof variable === "undefined") {
return defaultPhrase;
}
else {
return variable;
}
}
Run Code Online (Sandbox Code Playgroud)
它被称为这样:
Ext.Msg.show({title: phrase(js_shutdown,'Shutdown'), //...
Run Code Online (Sandbox Code Playgroud)
我想要做的是在未定义变量时使用默认短语,但是当我将未定义的变量传递给时phrase(),JS会抛出未定义的变量错误.我该如何解决?还有其他想法吗?
为可选参数分配默认值的好方法是什么?
我正在玩JavaScript中的可选参数,以及如果未指定参数则分配默认值的想法.我的方法接受两个参数,后者我认为是可选的,如果未指定则默认为false.我的方法看起来像这样......
// selects the item, appropriately updating any siblings
// item to select [, toggle on / off]
this.selectItem = function(item, toggle)
{
toggle = toggle && typeof toggle === 'boolean';
if (toggle)
{
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
在此jsFiddle上运行一些测试后,使用以下主体进行默认值分配:
function checkParamIsBoolean(param)
{
param = param && typeof param === 'boolean';
}
checkParamIsBoolean('me'); // boolean
checkParamIsBoolean([]); // boolean
checkParamIsBoolean(true); // boolean
checkParamIsBoolean(false); // boolean
checkParamIsBoolean(1 == 1); // boolean
checkParamIsBoolean(1); // …Run Code Online (Sandbox Code Playgroud) 如何在node.js中设置默认参数?
例如,假设我有一个通常看起来像这样的函数:
function(anInt, aString, cb, aBool=true){
if(bool){...;}else{...;}
cb();
}
Run Code Online (Sandbox Code Playgroud)
要调用它看起来像这样:
function(1, 'no', function(){
...
}, false);
Run Code Online (Sandbox Code Playgroud)
要么:
function(2, 'yes', function(){
...
});
Run Code Online (Sandbox Code Playgroud)
但是,似乎node.js不支持这种方式的默认参数.上面的最佳方法是什么?
有没有办法在JavaScript中检索函数的默认参数值?
function foo(x = 5) {
// things I do not control
}
Run Code Online (Sandbox Code Playgroud)
有没有办法获得x这里的默认值?最理想的是,像:
getDefaultValues(foo); // {"x": 5}
Run Code Online (Sandbox Code Playgroud)
请注意,toString该函数不起作用,因为它会在非常量的默认值上中断.
我在一个Javascript示例中看到了这一点
my_var = my_var || 69
Run Code Online (Sandbox Code Playgroud)
我认为这意味着检查my_var是否存在,如果没有将my_var设置为69.这是这种情况吗?有没有关于此的文档,很难表示为google/SO搜索,是否有人指向我的文档方向或重复QA?
(这个例子没有使用69,那只是我的粗鲁)
javascript ×9
function ×3
arguments ×2
ecmascript-6 ×2
callback ×1
default ×1
deployment ×1
execjs ×1
git ×1
node.js ×1
parameters ×1
undefined ×1
variables ×1