Câu hỏi Dấu hỏi có ý nghĩa gì trong hàm này?


Đây là tài liệu cho plugin này (Chỉ có hai hàm.) 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;
    });
});

Đây là 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>

14
2017-08-11 09:01


gốc


Các bản sao có thể có: stackoverflow.com/questions/1771786/question-mark-in-javascript  stackoverflow.com/questions/1688337/javascript-if-alternative  stackoverflow.com/questions/3322704/javascript-notation  stackoverflow.com/questions/4278232/…  stackoverflow.com/questions/6813840/… - JJJ
Đây là toán tử ternary cơ bản của tham chiếu javascript msdn.microsoft.com/en-us/library/be21c7hw(v=vs.94).aspx - Devjosh
Có thể trùng lặp Toán tử Ternary Javascript - Jürgen Thelen


Các câu trả lời:


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

Dấu hỏi ở đây là một thứ ba nếu hoạt động, Đơn giản chỉ cần đặt, nó là một ngắn, nội tuyến if tuyên bố.

Mở rộng ra, câu lệnh sẽ trông giống như sau:

if (url == "")
    load("1");
else
    load(url);

Nếu câu lệnh trước khi dấu hỏi đánh giá là true, thì phía bên tay trái của dấu hai chấm được sử dụng, nếu không (nếu nó sai) thì bên phải được sử dụng. Bạn cũng có thể lồng cái này, mặc dù nó không phải luôn luôn là một ý tưởng hay (để dễ đọc).


24
2017-08-11 09:04



Bạn khỏe, cảm ơn lần nữa - user784637
Tại sao không có niềng răng như câu trả lời của Curt? - Jarad
@ Jarad Nếu chỉ có một câu lệnh để thực thi trong khối, bạn không cần {}. Bất kỳ câu lệnh nào để thực thi và yêu cầu {} - Kolob Canyon


Viết tắt của nó cho:

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

I E. Nếu url bằng "" Sau đó trở lại "1", ngược lại, trả lại url

Trong ví dụ của bạn, nếu url bằng "" sau đó, 1.html sẽ được tải, nếu không, url + ".html" sẽ được tải


5
2017-08-11 09:02



Vì vậy, đó là những giá trị trả lại? Tôi có thể đọc nó giống như bạn đã đăng, nhưng bạn có thể cho tôi mã giả không? - user784637
Tôi đang bối rối, sẽ không phải là cú pháp thích hợp để bao gồm từ "trở lại"? - user784637
Nó được gọi là toán tử bậc ba và về cơ bản là một phương thức viết tắt cho một câu lệnh có điều kiện - thêm thông tin tại en.wikipedia.org/wiki/Ternary_operation - simnom
Tại sao downvote? - Curt
Tôi upvoted chỉ để cho bạn biết - user784637


Nó là một hoạt động ba năm.


2
2017-08-11 09:03



CHÚA ƠI!!! CẢM ƠN BẠN, CẢM ƠN BẠN, CẢM ƠN BẠN!!! Tôi nhận được nó, liên kết đó giải quyết tất cả các vấn đề của tôi! - user784637
@ user784637 haha. nó là một câu trả lời khá tệ. - Kolob Canyon