在JavaScript中使用angularjs:angularjs和window.x中的’use strict’未定义但仍然运行该文件而没有错误

'use strict' in angularjs and window.x undefined but still runs the file without error

本问题已经有最佳答案,请猛点这里访问。

我正在尝试编写angularjs和javascript函数,但我对关键字'use strict'有疑问。假设代码是类似下面这样保存在脚本标记内的HTML文件中。现在请记住,我们使用的是'use strict'关键字。在HTML中的任何地方都没有定义window.x。当我在Google Chrome上加载HTML文件时,为什么它不抱怨window.x?它没有定义吗?它输出为window.x: undefined。那么,任何未定义的变量都不应该被AngularJS检测到,并在Google Chrome控制台中作为一个错误或其他什么东西喷出来吗?为什么Chrome不抱怨未定义的变量?

1
2
3
4
5
6
7
8
9
10
11
12
(
  function() {
    'use strict';
    var x ="hello";

    console.log("window.x:", window.x); //undefined
    console.log("x:", x); //hello
    angular.module('myFirstApp', [])
      .controller('MyFirstController', function() {

      });
  })();
1
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js">


'use strict'不检查财产的存在/访问(window.x正试图在window上找到x的财产),这太昂贵了。相反,它确保声明变量。