这个函数中的问号代表什么意思?

17

这是该插件的文档(只有两个函数)。 http://tkyk.github.com/jquery-history-plugin/#documentation

$(document).ready(function() {
    function load(num) {
        $('#content').load(num +".html");
    }

    $.history.init(function(url) {
        load(url == "" ? "1" : url);
    });

    $('#ajax-links a').live('click', function(e) {
        var url = $(this).attr('href');
        url = url.replace(/^.*#/, '');
        $.history.load(url);
        return false;
    });
});

这里是HTML代码:

<body>
  <h1>jQuery History Plugin Ajax Sample</h1>
  <div id="ajax-links">
    <ul>
      <li><a href="#1">load 1.html</a></li>
      <li><a href="#2">load 2.html</a></li>
      <li><a href="#3">load 3.html</a></li>
    </ul>
    <div id="content"></div>
    <hr />
  </div>
  <p>[<a href="../">All samples</a>] [<a href="http://github.com/tkyk/jquery-history-plugin">Project home</a>]</p>
</body>

1
可能的重复问题: https://dev59.com/vnI-5IYBdhLWcg3wm5lG https://dev59.com/kXI-5IYBdhLWcg3wwbZM https://dev59.com/e3A75IYBdhLWcg3wYYBQ http://stackoverflow.com/questions/4278232/javascript-explanation-of-and http://stackoverflow.com/questions/6813840/what-does-this-javascript-code-do - JJJ
这是JavaScript的基本三元运算符,请参考http://msdn.microsoft.com/en-us/library/be21c7hw(v=vs.94).aspx。 - Devjosh
可能是Javascript三元运算符的重复问题。 - Jürgen Thelen
可能是JavaScript中的问号和冒号的重复问题。 - Boghyon Hoffmann
3个回答

30
load(url == "" ? "1" : url);

这里的问号是三目运算符,简单来说,它是一个短小、内联的if语句

展开后,该语句看起来可能像这样:

if (url == "")
    load("1");
else
    load(url);
如果问号前的语句为真,则使用冒号左侧的内容,否则(如果为假)使用右侧的内容。您也可以嵌套这个操作符,但这并不总是一个好主意(出于可读性考虑)。

为什么没有像Curt的答案那样使用大括号? - Jarad
2
@Jarad 如果代码块中只有一个语句需要执行,那么您不需要使用 {}。如果需要执行的语句超过一个,则需要使用 {} - Kellen Stuart

6

这是一个简写形式:

If (url == ""){
   load("1");
}
else {
   load(url);
}

例如,如果url等于"",则返回"1",否则返回url

在您的示例中,如果url等于"",则会加载1.html,否则会加载url + ".html"


那些就是返回值吗?我可以像你发布的那样阅读它,但你能给我伪代码吗? - user784637
我有点困惑,难道正确的语法不应该包括“return”这个词吗? - user784637
它被称为三元运算符,基本上是条件语句的一种简写方法 - 更多信息请参见http://en.wikipedia.org/wiki/Ternary_operation。 - simnom

2
这是一个三元操作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接