Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
常量作为JavaScript中函数的输入?_Javascript_Html_Constants_User Input - Fatal编程技术网

常量作为JavaScript中函数的输入?

常量作为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。为什么需要输入它们。只需引用它们,因为它们是在全

在我的js文件中说我想要

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 like
onclick=“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);};