javascriptvar a= function b(){ alert("Y"); } a(); b(); a = function b(){ alert("N") } a(); b();
运行结果为 Y N N N
为什么呢?
补充,
经测试:以上代码在IE6,IE7,IE8下运行正常
先忽略b();无法掉用的错误。
根据IE的运行结果,我的疑问在于:第一次调用a();为什么会是Y而不是N
第一次调用b(); 弹出N 那么就表示函数b()已经被覆盖了,那么
a为什么没有指向重新定义的函数b()呢?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
运行过程没什么好说的,知识点就一点,命名函数表达式的函数名仅对函数内部可见,对外部不可见,最好的证明
我运行报错- -b()没有定义
就代码来说,b()应该报错的。
这是函数声明与函数表达式的区别。
更详细可参考汤姆大叔-深入理解JavaScript系列(15):函数(Functions)