猿问

window.location.href有什么机制吗?

(function(){

window.location.href= 'www.baidu.com'alert('23')console.log(123)

}())
为什么先弹出123 再console呢? 在ajax中也是,window.location.href 不跳转?求解这里面是有什么机制吗?


千万里不及你
浏览 4076回答 2
2回答

慕运维8079593

window.location.href不会立即就阻塞所有的代码,这和alert不一样,它至少会等待一个页面离开事件,那么在同时,代码会往下执行。alert阻塞当前代码,这个没啥好问的吧,规定就是这样,alert,confirm和prompt都是同步的,所以后面的代码都会被阻塞。ajax中的location.href不跳转?问得不清楚,我查了类似的关键字,这是你要的说法,Artical,没啥难理解的,submit的重定向在success回调之前。如果你说的不是这种情况,建议补充一下问题

海绵宝宝撒

是异步的因为 LocationChange 行为在浏览器内核中是起定时器异步执行的,代码可以参见 Chromium 源码 NavigationScheduler::ScheduleFrameNavigation。异步执行的好处是为了防止代码调用过深,导致栈溢出,另外也是为了防止递归进入加载逻辑,导致状态紊乱,保证导航请求是顺序执行的。知乎上的答案
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答