javascript - angularjs 和 window.x 中的“use strict”未定义,但仍然运行文件而没有错误

标签 javascript angularjs

我正在尝试编写 AngularJS 和 JavaScript 函数,但我对关键字 'use strict' 有疑问。假设代码类似于下面的内容,保存在 script 标记内的 html 文件中。现在记住我们正在使用 'use strict'关键词。和window.x没有在 html 中的任何地方定义。当我在 Google Chrome 上加载 HTML 文件时,为什么它不提示 window.x ?不是没有定义吗?它输出为 window.x: undefined 。那么,任何 undefined variable 不应该被 AngularJS 检测到,并在 Google Chrome 控制台或其他东西中作为错误显示出来吗?为什么 Chrome 不提示 undefined variable ?

(
  function() {
    'use strict';
    var x = "hello";

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

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

最佳答案

'use strict'不检查属性是否存在/访问( window.x 试图在 x 上查找属性 window ) - 这会太昂贵。相反,它确保变量被声明。

关于javascript - angularjs 和 window.x 中的“use strict”未定义,但仍然运行文件而没有错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51215990/

相关文章:

javascript - EmberJS - 在单个路由中访问多个模型

angularjs - 错误: “Selectors not implemented”

javascript - 如何使用 ng-change 获取字段的值

javascript - 向下滚动时替换 Logo 图像 JS/HTML/CSS wordpress 网站

javascript - 从 Nodejs 获取子进程的进度输出

javascript - Google Feed API 行为

javascript - 如何仅从 Angular Js中的MySQL数据库日期戳中获取日期

javascript - 如何将一个 li 向右对齐并从中下拉列表?

javascript - 将 php 变量传递给 angular

AngularJS $rootScope.$on 未通过路由捕获或传递服务数据