我的示例网站出现问题,给我一个错误:Doc在以下行中的开发工具中未定义显示:Doc.Show.init();
有人建议为什么它在IE11中不起作用,但在chrome和firefox中起作用
谢谢。
'use strict'
var Doc = Doc || {};
Doc.Show = function() {
let init = function init() {
console.log("nothing to show");
};
return {
init: init
};
}();
h1 {
color: red;
text-align: center;
}
blockquote::before {
content: open-quote;
}
blockquote::after {
content: close-quote;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<link rel="stylesheet" href="/css/style.css">
<script src="/script/doc.js"></script>
<script>
Doc.Show.init();
</script>
</head>
<body>
<h1>This is Header one</h1>
<blockquote>This is blockquote</blockquote>
</body>
</html>
答案 0 :(得分:0)
问题是这一行:
var Doc = Doc || {};
您正在尝试在Doc
的初始化中使用全局变量Doc
。如果全局变量尚不存在,则会出现错误,因为严格模式不会自动创建全局变量。
严格模式也不允许通过在顶层声明全局变量来创建全局变量。您必须将它们创建为window
属性。
window.Doc = window.Doc || {};
window.Doc.Show = function() {
let init = function init() {
console.log("nothing to show");
};
return {
init: init
};
}();
并在调用时使用window
window.Doc.Show.init();