常量作为JavaScript中函数的输入?
在我的js文件中说我想要常量作为JavaScript中函数的输入?,javascript,html,constants,user-input,Javascript,Html,Constants,User Input,在我的js文件中说我想要 var NO = 0; var YES = 1; function doYouLikeCake(answer){} 当从另一个文件调用doyoulikecae时,我希望能够输入YES或NO,但如果在js文件中定义了这些变量,我不确定如何做到这一点。这可能吗 编辑:不要删除HTML位。没有,没有按钮。我正在尝试创建一个库,并希望简化它,以便库的用户只需编写doYouLikeCake(YES),而不必自己定义YES/NO。为什么需要输入它们。只需引用它们,因为它们是在全
var NO = 0;
var YES = 1;
function doYouLikeCake(answer){}
当从另一个文件调用doyoulikecae时,我希望能够输入YES或NO,但如果在js文件中定义了这些变量,我不确定如何做到这一点。这可能吗
编辑:不要删除HTML位。没有,没有按钮。我正在尝试创建一个库,并希望简化它,以便库的用户只需编写doYouLikeCake(YES),而不必自己定义YES/NO。为什么需要输入它们。只需引用它们,因为它们是在全局范围内声明的
function doYouLikeCake()
{
return YES;
}
是的,您可以这样做:
<input type="submit" onclick="doYouLikeCake(YES);" value="Yes">
<input type="submit" onclick="doYouLikeCake(NO);" value="No">
<script>
var NO = 0;
var YES = 1;
function doYouLikeCake(answer) {
//...
}
</script>
var NO=0;
var YES=1;
函数doYouLikeCake(应答){
//...
}
样板是
(function () {
var YES = true;
var NO = false;
// All your JavaScript code here
}());
因此,您希望将“常量”放在名称空间中,这可以通过IIFE(如上面的示例)或DOM就绪处理程序实现。您的所有代码都应该驻留在该名称空间中,这样可以确保您的“常量”对代码可用
顺便说一句,您可以通过创建不可写属性来创建实常量:
Object.defineProperty( APP, 'YES', {
value: true,
enumerable: true
});
其中,
APP
是常量的名称空间。下面是我上面评论中的示例:如果变量是在js文件中定义的,则需要从脚本中动态更新html元素
例如,这可能是您的html:
<input type="radio" name="YesOrNo" id="NO" value="PlaceHolderForNo" />NO
<input type="radio" name="YesOrNo" id="YES" value="PlaceHolderForYes" />YES
//这些是你的变量
inputNO.value=NO;
inputYES.value=YES;
inputNO.onclick=function(){doYouLikeCake(this.value);};
inputYES.onclick=function(){doYouLikeCake(this.value);};
示例:“从html文件调用”-您是指属性处理程序,如
onclick=“…”
?我猜您的html文件中有一些按钮?如果是这样,那么您应该使用true表示是,false表示否:例如:yes noCall likeonclick=“doYouLikeCake(no)”
。这将把0传递给函数的answer参数。那么在函数中,如果(answer){//its true some code}或者{//its false do this code}那么你的问题是什么?您的用户可以编写DoyoulikeCae(是)…应尽量减少全局变量的使用。询问者需要常量。Globals最适合模拟这种行为。不过,我没有评论他是否应该这么做,当然不是。常数当然是名称空间不可知的。它们不在乎它们是全局的还是绑定到本地名称空间。正如我所说,应该尽量减少使用全局变量。因此,建议将常量分配给您自己的命名空间:APP.YES=true
,然后单击onclick=“APP.doyoulikecae(APP.YES)”
。
inputNO.value=NO;
inputYES.value=YES;
inputNO.onclick=function(){doYouLikeCake(this.value);};
inputYES.onclick=function(){doYouLikeCake(this.value);};