为什么兼容低版本IE的方法不奏效?

来源:6-2 create系列创建节点的方法

花生香又脆

2019-12-12 23:51:01

老师你好,

  1. 我按照视频里写的低版本IE兼容html5的办法,为什么没有用呢?(浏览器是IE11,在开发工具切换成IE8测试的)

  2. 这里的函数为什么是这种写法(function(){})();啊?

  3. 代码while(i--)这个部分是什么意思呢?

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>IE兼容html5标签</title>

<style type="text/css">

article{font-size:40px;color:orange;}

</style>

<script>

(function(){

if (!

/*@cc_on!@*/

0) return;

var e="article, aside, header, footer, nav, section".split(", ");

var i=e.length;

while(i--){

document.createElement(e[i]);

}

})();

</script>

</head>

<body>

<article>

空气

</article>

</body>

</html>

写回答

1回答

好帮手慕慕子

2019-12-13

同学你好,对于你的问题解答如下:

  1. 如下,老师测试同学粘贴的代码,在ie8下是可以生效的,建议同学清除缓存在测试一下。

    http://img.mukewang.com/climg/5df2fd6d09801c3d08470370.jpg

  2. (function(){})();这种写法是js语法中立即执行函数的一个固定写法,因为函数本身会形成一个局部作用域,在函数里面定义的变量在函数外部访问不到的。在实际开发中,一个项目会有很多js文件,代码多了,不同文件之间避免不了变量名重复的情况。如果不把变量包裹在函数里面,那么同名变量后面的会覆盖前面的,这就是变量污染。所以要放在一个立即执行函数里面,这样每一个函数中的变量都不会相互影响了,即不污染全局的环境。

    作用域会在后面解答有讲解,目前简单了解一下就行,学到后面就好理解了

  3.  i--表示每执行一次循环, 做一次i减一的操作, 当i小于等于0的时候, 会被隐式转换成false,导致循环条件不成立, 退出循环。

    这里老师给出一个简单的例子,帮助同学理解:

    http://img.mukewang.com/climg/5df2fc13099f0b4404930173.jpg

如果帮助到了你,欢迎采纳,祝学习愉快~

0

0 学习 · 40143 问题

查看课程