IE11中未定义“文档”

时间:2019-08-09 20:57:20

标签: javascript

我的示例网站出现问题,给我一个错误: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>

1 个答案:

答案 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();