Jim*_*ery 7 javascript undefined default-value
理想情况下,我希望能够写出如下内容:
function a( b ) {
b.defaultVal( 1 );
return b;
}
Run Code Online (Sandbox Code Playgroud)
这样做的意图是,如果b是任何定义的值,b将保持为该值; 但如果b未定义,b则将设置为参数中指定的值defaultVal(),在本例中1.
这甚至可能吗?
我一直在玩这样的东西:
String.prototype.defaultVal=function(valOnUndefined){
if(typeof this==='undefined'){
return valOnUndefined;
}else{
return this;
}
};
Run Code Online (Sandbox Code Playgroud)
但是我没有成功地将这种逻辑应用于任何变量,特别是未定义的变量.
有没有人对此有任何想法?可以吗?还是我在错误的树上吠叫?
Eli*_*gem 11
为什么不使用默认运算符:
function someF(b)
{
b = b || 1;
return b;
}
Run Code Online (Sandbox Code Playgroud)
任务完成!以下是有关其工作原理的更多信息.
正如旁注:您的原型不起作用,因为您正在扩充String原型,而如果您的变量未定义,String原型并不完全适用.
绝对是,超级 - 确保您只是切换到默认值,b当真的未定义时,您可以这样做:
var someF = (function(undefined)//get the real undefined value
{
return function(b)
{
b = b === undefined ? 1 : b;
return b;
}
})(); // by not passing any arguments
Run Code Online (Sandbox Code Playgroud)
那么在这里要学习的最重要的事情是,如果undefined你是一个变量,默认情况下,它没有任何可用的方法.所以,你需要使用可以对变量进行操作,而不是其成员/方法的方法的变量.
尝试类似的东西:
function defaultValue(myVar, defaultVal){
if(typeof myVar === "undefined") myVar = defaultVal;
return myVar;
}
Run Code Online (Sandbox Code Playgroud)
你要做的是相当于这个:
undefined.prototype.defaultValue = function(val) { }
Run Code Online (Sandbox Code Playgroud)
......出于显而易见的原因,这是行不通的.
| 归档时间: |
|
| 查看次数: |
10569 次 |
| 最近记录: |