具有相同方法和不同实现的javascript

具有相同方法和不同实现的javascript,javascript,jquery,Javascript,Jquery,我有js文件(rework.js)和下面的函数 /** * Java script functions to set comments for selected rework reason. */ function setReworkCheckFields() { var note = $("#rework_note").val(); var reworknoteImage = document.getElementsByName("reworknote_image");

我有js文件(rework.js)和下面的函数

/**
 * Java script functions to set comments for selected rework reason.
 */
function setReworkCheckFields() {
    var note = $("#rework_note").val();
    var reworknoteImage = document.getElementsByName("reworknote_image");
    var reworknoteScript = document.getElementsByName("reworknote_script");
    var reworknoteVoice = document.getElementsByName("reworknote_voice");
    var reworknoteMusic = document.getElementsByName("reworknote_music");
    if ($(reworknoteImage).is(':checked')) {
        $("#reworknote_image_note").val(note);
    }
    if ($(reworknoteScript).is(':checked')) {
        $("#reworknote_script_note").val(note);
    }
    if ($(reworknoteVoice).is(':checked')) {
        $("#reworknote_voice_note").val(note);
    }
    if ($(reworknoteMusic).is(':checked')) {
        $("#reworknote_music_note").val(note);
    }
}
我已经在html中导入了这个js文件,并添加了相同的方法和不同的实现,如下在html中所示

<script type='text/javascript' src='style/js/rework.js'></script>

<script type='text/javascript'>
function setReworkCheckFields() {
    var note = $("#rework_note").val();
    var reworknoteImage = document.getElementsByName("reworknote_image");
    var reworknoteScript = document.getElementsByName("reworknote_script");
    var reworknoteVoice = document.getElementsByName("reworknote_voice");
    var reworknoteMusic = document.getElementsByName("reworknote_music");
    if ($(reworknoteImage).is(':checked')) {
        $("#reworknote_image_note").val(note);
    } else {
        $("#reworknote_image_note").val(null);
    }
    if ($(reworknoteScript).is(':checked')) {
        $("#reworknote_script_note").val(note);
    } else {
        $("#reworknote_script_note").val(null);
    }
    if ($(reworknoteVoice).is(':checked')) {
        $("#reworknote_voice_note").val(note);
    } else {
        $("#reworknote_voice_note").val(null);
    }
    if ($(reworknoteMusic).is(':checked')) {
        $("#reworknote_music_note").val(note);
    } else {
        $("#reworknote_music_note").val(null);
    }
}
</script>

函数setReworkCheckFields(){
var注释=$(“#返工注释”).val();
var reworknoteImage=document.getElementsByName(“reworknote_image”);
var reworknoteScript=document.getElementsByName(“reworknote_脚本”);
var reworknoteVoice=document.getElementsByName(“reworknote_voice”);
var reworknoteMusic=document.getElementsByName(“reworknote_music”);
if($(reworknoteImage).is(':checked')){
$(“#reworknote_image_note”).val(注);
}否则{
$(“#reworknote_image_note”).val(空);
}
if($(reworknoteScript).is(':checked')){
$(“#reworknote_script_note”).val(注);
}否则{
$(“#reworknote_script_note”).val(空);
}
if($(reworknoteVoice).is(':checked')){
$(“#修改注释(语音注释)”).val(注释);
}否则{
$(“#reworknote_voice_note”).val(空);
}
if($(reworknoteMusic).is(':checked')){
$(“#reworknote_music_note”).val(note);
}否则{
$(“#reworknote_music_note”).val(空);
}
}
并调用下面的javascript函数

<table>
     <tr>
         <td>Image: <input type="checkbox" name="reworknote_image" ${reworknote_image.workingchecked} onchange="setReworkCheckFields()"/></td>
         <td>Script: <input type="checkbox" name="reworknote_script" ${reworknote_script.workingchecked} onchange="setReworkCheckFields()"/></td>
         <td>Voice: <input type="checkbox" name="reworknote_voice" ${reworknote_voice.workingchecked} onchange="setReworkCheckFields()"/></td>
         <td>Music: <input type="checkbox" name="reworknote_music" ${reworknote_music.workingchecked} onchange="setReworkCheckFields()"/></td>
     </tr>
</table>

图片:
脚本:
声音:
音乐:

你能告诉我这个流程是如何运作的吗。这对写入有效吗?

第二个函数将重新声明第一个函数,因此当您调用
setReworkCheckFields()
时,您将运行第二个函数

是的,它是有效的。这就像重写变量一样


请记住,如果要在代码中再次声明此函数,它还将重新声明此定义。在某些情况下,这是有用的行为,但您必须重新定义js函数。

否-流程是,只有最后一个函数在js范围内定义,因为它会覆盖任何具有类似名称的js代码

在javascript中,没有像Java或其他语言那样的函数重载。 您可以将代码包装到不同的名称空间:

var MyFirstNameSpace = {
    setReworkCheckFields: function(){
         // code goes here...
    } 
};

var MySecondNameSpace = {
    setReworkCheckFields: function(){
         // code goes here...
    } 
};
然后可以调用MyFirstNameSpace.setReworkCheckFields()或MySecondNameSpace.setReworkCheckFields()


一般来说,重写javascript全局作用域不是一个好的做法,因为您不知道您的项目将包含哪些其他js代码,这将打乱您自己的代码。

我可能弄错了,但我相信第二个函数将重写rework.js中的函数