函数中的mopen(m1)和mopen('m1')之间有什么区别?

时间:2014-01-21 09:05:34

标签: javascript html5

以下程序中使用的功能.... 为什么我们在函数mopen('m1')中使用单引号而不是mopen(m1)

<ul id="sddm">
    <div id="m1" onmouseover="mcancelclosetime()" onmouseout="mclosetime()">
        <a href="#">HTML DropDown</a>
        <a href="#">DHTML DropDown menu</a>
        <a href="#">JavaScript DropDown</a>
        <a href="#">DropDown Menu</a>
        <a href="#">CSS DropDown</a>
    </div>
</li>
<li>
    <a href="#" onmouseover="mopen('m1')" onmouseout="mclosetime()">Home</a>

4 个答案:

答案 0 :(得分:8)

  • mopen(m1)m1声明为可执行文件作为函数mopen的参数。

  • mopen('m1')将字符串文字'm1'作为函数mopen的参数。

<强>更新

相应更新@ Frogmouth和@ MazeHatter的评论:

在您的情况下,mopen(m1)会触发ReferenceError: m1 is not defined,除非您的javascript代码中的变量m1被定义为a global

答案 1 :(得分:2)

这当然取决于mopen()的作用。奇怪的是,我必须为项目借用与你相同的代码,mopen()看​​起来像这样:

function mopen(id) {

// cancel close timer
mcancelclosetime();

// close old layer
if(ddmenuitem != null) ddmenuitem.style.visibility = 'hidden';

// get new layer and show it
ddmenuitem = document.getElementById(id);
ddmenuitem.style.visibility = 'visible';

} 

您在此处看到您发送的参数是 id ,然后将其发送到 document.getElementById(id);

getElementById()需要一个字符串,即HTML中菜单项的id。

在这种情况下

<div id="m1"

所以你传入字符串“m1”。

没有引号 m1 是一个变量引用。由于您没有名为 m1 的变量,如果您尝试阅读它,则会导致错误。

答案 2 :(得分:0)

mopen('m1'); //you pass m1 as a string

mopen(m1); //mp1 an object or a variable

答案 3 :(得分:0)

 var m1="Shoaib"
  1. mopen(M1);
  2. mopen(&#39; M1&#39);
  3. mopen();

    function mopen(methodOpen){
    
     alert(methodOpen+" is opened");
    }
    
  4. 第一个案例输出将在警告框中为Shoaib is opened,因为m1被视为您传递给方法的变量。

    第二种情况,您将direct value作为字符串&#39; m1&#39; 因此,警报框中的输出将为m1 is opened

    第三种情况,因为您没有传递任何变量,因此它将采用未定义的 因此输出将为undefined is opened