this在什么时候为undefined
this 为undefined的情况
首先我们要知道
在严格模式下,独立function中的this指向为undefined;非严格模式指向为全局作用域。
而在es6的类
当中:
首先明确的是类中所有定义的方法,在浏览器运行时候全部都加上了
user strict
,何为user strict
,就是浏览器的严格模式。那第二个问题就来了,为什么在严格模式下就为undefined。严格模式下无法再意外创建全局变量
记住这点就可以了
'use strict'function a() {b()function b() {console.log(this);}}a()//undefined
如果不使用'use strict'
,打印的就是指向window
看看类
class Person {constructor(name) {this.name = namethis.init()this.geter()}init() {console.log(this);}geter() {function success() {console.log(this);}success()/* 这里是在没有严格模式的情况下是window来调用,但严格模式下没有window,所以是undefined */}}let jack = new Person('jack')
另外,严格模式对箭头函数没有效果
由于这来自于周围的词法上下文,因此与此相关的严格模式规则将被忽略。词法的意思是this引用一个词法封闭函数的this值。,恢复到以前的上下文规则
<html>
<script type="text/javascript">
"use strict";
var foo = () => {console.log(this)
};
foo(); //Window
</script>
</html>
this在什么时候为undefined相关推荐
- [JS] undefined、null、ReferenceError的区别、变量作用域问题
undefined.null.ReferenceError的区别 null表示"没有对象",即该处不应该有值. 典型用法是: (1) 作为函数的参数,表示该函数的参数不是对象. ( ...
- 解剖JavaScript中的null和undefined
在JavaScript开发中,被人问到:null与undefined到底有啥区别? 一时间不好回答,特别是undefined,因为这涉及到undefined的实现原理.于是,细想之后,写下本文,请各位 ...
- ajax异步传输数据时return返回总是undefined(转载)
写ajax传送数据时,需要用到异步,如上代码即总会返回undefined,很是费解.各种方式调试,后来广阅网上博客 ,发现其实很多人遇到过这样的问题,大家都说原因是Jquery的ajax是异步,大多时 ...
- golang etcd 报错 undefined: resolver.BuildOption 解决方案
1. 问题现象 import ("github.com/coreos/etcd/clientv3" ) 在使用 github.com/coreos/etcd/clientv3 时代 ...
- golang 同一个包中函数互相调用报错 undefined 以及在 VSCode 中配置右键执行整个包文件
1. 代码结构 demo 文件夹下有两个文件,分别为 hello.go 和 main.go ,结构如下: wohu@wohu:~/GoCode/src$ tree demo/ demo/ ├── he ...
- VS Code go 插件安装失败 r.declReader.Reset undefined
在安装完 VS Code 后开始安装 go 的插件发现有如下错误 wohu@wohu:~/GoCode/src$ go install github.com/nsf/gocode # github.c ...
- undefined reference to 'pthread_create'问题解决(转)
undefined reference to 'pthread_create' undefined reference to 'pthread_join' 问题原因: pthread 库不是 ...
- matlab matlabpool,Matlab matlabpool函数undefined
我尝试使用matlab并行计算功能. 我先输入"版本"来检查,如果我已经安装了并行计算工具箱,它确实Matlab matlabpool函数undefined >> ve ...
- 判断为空:null、undefined、空字符串、中文空格
/*判断为空*/ private isNull=data=> (data == null || (data.toString().replace(/\ |\ /g, "") ...
- js在post后台接口的时候,一行代码完成删除对象中所有值为null、undefined或为空字符串““的属性
var d= {a: 1,b: null,c: 3,d: undefined };Object.keys(d).forEach(k=>d[k]==null&&delete d[k ...
最新文章
- 省选前的反演抢救计划
- HDU 1251 统计难题(Trie模版题)
- pc 图片预览放大 端vue_企业为什么需要建设PC+手机微信三合一全网营销的网站呢...
- Springboot遇到的问题
- 眼花缭乱的数据库,怎样选择?给你这个书单,想学哪个学哪个
- thinkPHP仿QQ飞车手游模拟抽奖源码
- bzoj 2660: [Beijing wc2012]最多的方案
- 从职业方向,谈程序员如何突破成长瓶疾,我们该怎么去学习?
- rt1052 usb速率_rt1052 spi flash 读数据好慢
- 201521123004 《Java程序设计》第2周学习总结
- 如何优雅的编写Objective-C语言?
- 2.2TextCNN
- 线性代数:矩阵及其运算
- DDPM代码详细解读(1):数据集准备、超参数设置、loss设计、关键参数计算
- 双系统linux开机黑屏,解决双系统中ubuntu开关机异常,黑屏,出现“nouveau , SCHED_ERROR”字样等的问题...
- vs2019新手怎么解决命名空间“”中不存在类型或命名空间名“”(是否缺少程序集引用?)问题全解
- DACAI串口屏使用
- 学堂云 减脂与运动塑形
- 快讯|腔家政服务商“懒猪到家”完成200万种子轮融资,卡伊妮洗衣连锁投资... 1
- GameFi 代币的单币与双币模型比较