Javascript中的变量是否可以不及时声明
我一直在学习Javascript的异步特性,我知道某些函数需要一定的时间才能完成 例如,当我想在文件操作完成后执行某项操作时,我将创建一个承诺Javascript中的变量是否可以不及时声明,javascript,Javascript,我一直在学习Javascript的异步特性,我知道某些函数需要一定的时间才能完成 例如,当我想在文件操作完成后执行某项操作时,我将创建一个承诺 声明具有不同数据类型的变量不需要在承诺中,但我想知道普通变量是否可能在以后引用时不及时声明?我知道它们几乎是即时的,这从来都不是问题,但我想了解一下在解释器中如何处理这一点 有些操作确实需要一些时间才能完成,但几乎所有Javascript代码都是完全同步的。也就是说,如果您在第1行执行某些操作(运行函数、分配变量、创建变量),该操作将在第2行运行时完成,
声明具有不同数据类型的变量不需要在承诺中,但我想知道普通变量是否可能在以后引用时不及时声明?我知道它们几乎是即时的,这从来都不是问题,但我想了解一下在解释器中如何处理这一点 有些操作确实需要一些时间才能完成,但几乎所有Javascript代码都是完全同步的。也就是说,如果您在第1行执行某些操作(运行函数、分配变量、创建变量),该操作将在第2行运行时完成,除非所执行的操作生成异步进程(如网络请求或检查系统上是否存在文件) 除非您处理的是少数几个异步进程中的一个,否则这不会是一个问题。出于类似的原因:
let num = 1;
num++;
console.log(num);
保证打印2
初始化变量不是异步的,所以只要在尝试引用它之前声明它,就会及时声明它
如果尝试引用在声明行之前用var
声明的变量,则会得到未定义的(不会抛出错误,但变量不会包含任何内容):
(()=>{
console.log(foo);
var-foo=5;
})();你能举个例子吗?请记住,承诺永远不会立即/同步运行传递给.then()
(例如)的函数,即使承诺不仅可以快速解析,而且在调用它之前已经解析。在同步运行的代码中间,执行也不会停止。它是单线程的,没有先占权。