我正在使用Nodejs,我对JavaScript的异步特性感到困惑。
如果没有回调函数或promises,every函数是否以异步方式执行?
例如,
let arr = []
for (let i = 0; i < 600; i++) {
arr.push(i)
}
console.log(arr)
arr = []
console.log(arr)
如果
arr
变成一个空数组,而 arr
被 'for' 语句推送怎么办?
我多次执行上面的代码,幸运的是,没有出现令人担忧的情况。这是巧合吗?
function foo(num) {
console.log(num)
}
let a = 0
foo(a)
a = 1
我想让
foo(a)
在上面的代码中总是返回 0,而不是 1.
如果 Node.js 运行时执行
a=1
早于 foo(a)
怎么办?
我应该在这些微不足道的情况下添加 promise 吗?
如果没有回调函数或者promises,是不是每个函数都是异步执行的?
一般情况下,JavaScript是同步执行的。
有些函数是异步的。他们通常返回承诺或接受回调,以便调用他们的人可以在完成后做一些事情。
如果 arr 被“for”语句推送时变成空数组怎么办?
在你的例子中,这不可能发生。你写的代码是同步的。
如果一些异步代码正在运行,那么它就不会在同一个事件循环中,也不会访问那个变量。如果所述异步代码触发了回调,那么它将排队直到该事件循环空闲。
如果 Node.js 运行时执行 a=1 早于 foo(a) 怎么办?
不会。 JavaScript 不会随机化语句的顺序。