一般认为:严格模式下this不允许指向全局对象。是函数体是否处于严格模式!

如:http://www.ruanyifeng.com/blog/2013/01/javascript_strict_mode.html

需要说明的是:本身指向全局的this是没有问题的

示例代码:

<!DOCTYPE html>
<html lang="zh"> <head>
<meta charset="UTF-8" />
<title>严格模式下this指向</title>
</head> <body>
<script type="text/javascript">
'use strict';
console.log(this);
</script>
</body> </html>

控制台输出为window对象(全局对象)

严格模式下this不允许指向全局对象是指在函数内部,如下示例代码:

<!DOCTYPE html>
<html lang="zh"> <head>
<meta charset="UTF-8" />
<title>严格模式下this指向</title>
</head> <body>
<script type="text/javascript">
'use strict'; function F() {    
this.a = 1;   //这种指向全局的this不对
};
F();
</script>
</body> </html>

控制台输出报错:

补充(2017-12-14):

"use strict";
(function(){
console.log(this)//undefined
})(); !function(){
console.log(this)//undefined
}(); setTimeout(function(){
console.log(this) //window
},0); function a(){
console.log(this);
}
a(); //undefined

setTimeout 是window的方法,setTimeout 在调用传入函数的时候,如果这个函数没有指定了的 this,那么它会做一个隐式的操作—-自动地注入全局上下文window

setTimeout(function(){
console.log(111111)
},1000)

window.setTimeout(function(){
console.log(111111)
},1000)

上述2个代码是相同的。

JavaScript严格模式下this指向的更多相关文章

  1. Javascript 在严格模式下禁止指向 this

    如下代码, f() 输出的是 false,而 f2() 输出的是 true. 这是因为 f2 在严格模式下禁止 this 指向全局,所以 this 是 undefined, !this 当然是 tru ...

  2. 关于javascript严格模式下七种禁止使用的写法

    分享至javascript语言精髓与编程实践 开启严格模式(”use strict"): 在全局代码的开始处加入 在eval代码的开始处加入 在函数声明代码处加入 在new Function ...

  3. Javascript 严格模式下保留关键字

    为了应对未来的版本,以下关键字在严格模式下禁止使用. implements interface let package private protected public static yield 示例 ...

  4. Javascript 严格模式下不允许删除一个不允许删除的属性

    如下代码,在严格模式下,如果删除 Object.prototype 浏览器会报错,目前 IE10 也支持 严格模式. <script> "use strict"; de ...

  5. 关于 Javascript 严格模式下多文件合并时注意

    Javascript 在第一行使用 "use strict" 声明严格模式. 但是在多个 js 文件合并时就需要注意了,可能你的是严格模式,但别的文件不是,就会造成错误. 为什么使 ...

  6. javascript严格模式下的8点规则

    [作用] [1]消除js语法的一些不合理.不严谨.不安全问题,减少怪异行为并保证代码运行安全 [2]提高编译器效率,增加运行速度 [使用] [1]整个脚本启用严格模式,在顶部执行:"use ...

  7. Javascript 严格模式下几个禁忌

    禁止使用未声明的变量. 禁止删除变量或对象 禁止删除函数 禁止使用八进制 禁止对只读属性赋值 禁止对一个使用getter方法读取的属性进行赋值 禁止删除一个不允许删除的属性 变量名禁止使用 " ...

  8. 严格模式下顶层箭头函数this指向的是全局对象

    我们知道普通函数调用,this在非严格模式下指向全局对象,在严格模式下是undefined.那箭头函数呢?我们知道,箭头函数没有自己的this,它的this是最近外层非箭头函数的this,那直接在顶层 ...

  9. 严格模式下的javascript

    arguments: ECMA5移除了实参对象(arguments),在非严格模式下函数里的arguments只是一个标识符,在严格模式下它变成了保留字.严格模式下无法使用arguments作为形参名 ...

随机推荐

  1. [USACO06FEC]Milk Patterns --- 后缀数组

    [USACO06FEC]Milk Patterns 题目描述: Farmer John has noticed that the quality of milk given by his cows v ...

  2. [ZJOI2007]最大半连通子图

    [ZJOI2007]最大半连通子图 题目大意: 一个有向图称为半连通的,当且仅当对于任意两点\(u,v\),都满足\(u\)能到达\(v\)或者\(v\)能到达\(u\). 给定一个\(n(n\le1 ...

  3. Dubbo整合SpringCloud图片显示问题

    Dubbo整合SpringCloud图片显示问题 Tips:公司项目,记录一点经验吧,理解的不对的地方欢迎大神指点 问题:商品图片上传功能(公司没有专门文件服务器)写的保存目录直接是保存在docker ...

  4. VK Cup 2016 - Qualification Round 2 B. Making Genome in Berland 水题

    B. Making Genome in Berland 题目连接: http://www.codeforces.com/contest/638/problem/B Description Berlan ...

  5. Python 实现简单的感知机算法

    感知机 随机生成一些点和一条原始直线,然后用感知机算法来生成一条直线进行分类,比较差别 导入包并设定画图尺寸 import numpy as np import matplotlib.pyplot a ...

  6. KVM虚拟机安装使用教程(Ubantu)

    背景: 公司在某电信机房有50台ubantu的实体机,机器配置的ip是192.168.100.x的ip,内存和cpu都是高端配置.假如哪些端口需要对外映射,就通过机房的防火墙完成端口映射. 100.1 ...

  7. rc_80 tomcat 日志

    1 #!/bin/sh 2 cd /mnt/tomcat/tomcat_8082/logs; 3 tail -f catalina.out;

  8. ArcGIS Engine中空间参照(地理坐标)相关方法总结转

    ArcGIS Engine中空间参照(地理坐标)相关方法总结 来自:http://blog.csdn.net/u011170962/article/details/38776101 1.创建空间参考 ...

  9. A电脑的gho还原到B电脑上的驱动解决方案

    近来给B笔记本做系统,我有一个gho,是A电脑的,我想直接把系统复制过去,我的这个gho有50G,里面已经配置好了java,安卓,cocos2dx的各种环境变量,安卓开发的朋友都知道这个有多恶心,我就 ...

  10. Java:初学 Java,遇到的问题及解决方案小结。

    背景 失败是成功之母,前提是没有被遗忘的失败,本文记录这几天学习 Java,自己遇到的几个问题和解决方案,希望能达到强化记忆的作用. 开发环境是:Eclipse + Tomcat7.0. 第一个:依赖 ...