首页 > 技术文章 > JavaScript--预解析在IE存在的问题

mrszhou 2017-10-28 23:24 原文

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <script>
 7     /**以下代码,在IE8以下有问题,弹出的是2
 8         if(true) {
 9             function fn() {
10                 alert(1);
11             }
12 
13         } else {
14             function fn() {
15                 alert(2);
16             }
17         }
18         fn();
19 */
20 
21         /*
22         *   冷门知识点:
23         *       低版本IE在函数声明在判断语句里有问题,
24         *           出现问题的原因:IE预解析有bug
25         *       解决办法:通过函数表达式避免这个问题
26         * */
27         var fn;
28         if (true) {
29             fn = function  () {
30                 alert(1);
31             }
32         } else {
33             fn = function  () {
34                 alert(2);
35             }
36         }
37         fn();
38 
39     </script>
40 </head>
41 <body>
42 
43 </body>
44 </html>

 

推荐阅读