我的印象是javascript同时执行所有行,这是一件事,使其与许多其他编程语言有所不同。我有以下用于简单索引的代码;
var newAcceptIndex = 0;
function addNewAccept(event) {
var newAccept = `some new accept ${newAcceptIndex}`
$(event.target).closest("[id^='new_item_']").before(newAccept);
newAcceptIndex += 1
};
我希望在第一次调用时将newAcceptIndex设置为1,因为所有代码应同时执行,因此将其设置为1而不是0。我是否遇到争用条件或按预期工作?
答案 0 :(得分:0)
JS代码不会同时全部运行,您可能只是在考虑hoisting JS does with their variables and functions,因此它们不会立即引发错误。您只需要像其他编程语言一样重新组织代码-从上到下执行:
var newAcceptIndex = 0;
function addNewAccept(event) {
newAcceptIndex += 1
var newAccept = `some new accept ${newAcceptIndex}`
$(event.target).closest("[id^='new_item_']").before(newAccept);
};