search

Home  >  Q&A  >  body text

javascript 同名函数不分有参数和无参数吗?

为什么都是222

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script type="text/javascript" src="jquery-2.1.1.min.js"></script>
</head>

<body>


<p id="page">
    <p>
        <a href="/signup/" onclick="app.requireLogin();return false;">注册</a>
        <a href="#" onclick="app.requireLogin('', {to: 'login'});return false;">登录</a>
    </p>
</p>




<script>
var app = {
    requireLogin : function(a, b) {
        console.log(b.to + "----");
        if(b.to == 'login') {
            $('#page').append('<h1>1111111</h1>');
        }
    },
    requireLogin : function() {
        console.log('reg');
        $('#page').append('<h1>2222</h1>');
    }
};
</script>


</body>
</html>
PHPzPHPz2902 days ago370

reply all(4)I'll reply

  • 黄舟

    黄舟2017-04-10 14:48:51

    你这个是对象属性啊,同名的属性肯定是被覆盖的啊。不过即使是同名的函数,也是不分的....这个我好像只见过编译型的分这个?

    reply
    0
  • ringa_lee

    ringa_lee2017-04-10 14:48:51

    js不支持函数重载 前者被后者覆盖掉了

    reply
    0
  • 阿神

    阿神2017-04-10 14:48:51

    其实这样就类似于:
    var a = 100;
    var a = 200;
    最终得到的就是200。

    但是需要说明一下,在严格模式下:
    {
    a: 100,
    a: 200
    }
    会报错。严格模式不允许对象属性同名。
    非严格模式下,对象有同名属性时,后者会无条件覆盖前者。

    reply
    0
  • 大家讲道理

    大家讲道理2017-04-10 14:48:51

    这是把动态语言当静态语言用的节奏呀。

    reply
    0
  • Cancelreply