gpt4 book ai didi

javascript - 只有 jQuery 函数语法适用于特定场景

转载 作者:行者123 更新时间:2023-11-28 12:28:05 26 4
gpt4 key购买 nike

看一下下面 jfiddle 代码片段中的匿名 jQuery 函数。还有其他库作为这个 jfiddle 的外部引用,所以我只是猜测这是 jQuery 语法。

http://jsfiddle.net/LEt4Q/12/

代码片段:

$(function() {

var canvas = new draw2d.Canvas("gfx_holder");
var x = 20,
y = 20;
addArrowToConnection();
injectSetPosition();
var previousRec, newRec;
for (var i = 1; i <= 64; i++) {
newRec = addRec(canvas, i, x, y);

if (i / 8 == Math.floor(i / 8)) {
y = y + 80;
x = 20;
} else {
x = x + 80;
}

if (previousRec != null && newRec != null) {
var conn = new draw2d.Connection();

conn.sourcePort = previousRec.port;
conn.targetPort = newRec.port;
var label = new draw2d.shape.basic.Label({
text: "Label"
});
label.setColor("#0d0d0d");
label.setFontColor("#0d0d0d");
label.setStroke(0);
var arrow = new draw2d.decoration.connection.ArrowDecorator(10, 6);
conn.setTargetDecorator(arrow);
conn.setRouter(new draw2d.layout.connection.DirectRouter());
conn.add(label, new draw2d.layout.locator.ParallelMidpointLocator());
canvas.add(conn);
}

previousRec = newRec;
}

});

除上述函数外,此 jfiddle 中的所有其他函数都使用 JavaScript 标准函数符号之一 ( var functionName = function() {} vs function functionName() {} )。如果您尝试用其他三种符号替换语法,则代码将不起作用。这个符号有什么重要意义?为什么只有最后一个语法有效?

var fun = function() { ... }  // doesn't work
function fun() { ... } // doesn't work
(function() { ... })(); // doesn't work
$(function() { .. }); // works!!!!!!!!!!!!!!!

最佳答案

因为它们不是同一件事。您混淆了 ready 的简写jQuery 中的事件和 IIFE:

$(document).ready(function(){})

等同于:

$(function(){})

但它与:

(function(){}())

后者是立即调用的函数表达式;它与就绪事件无关。它只是一个执行自身的函数,目的是创建一个闭包。

关于javascript - 只有 jQuery 函数语法适用于特定场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25731913/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com