use strict开启严格模式后,调用非对象成员的函数体作用域内this为undefined。
我们一般写js文件都是babel转成ES6的,babel会自动给js文件上加上严格模式。 用了严格模式"use strict",严格模式下无法再意外创建全局变量,所以this不为window而为undefined "use strict";varfoo=functionfoo(){console.log(this)};foo();//undefined 四、进阶问题:严格模式对箭头函数没有效果 严格模式为什么对箭头...
这里问的主要是因为 babel ES2015模块是隐式严格模式的,所以即使是上方第一个问题用普通函数输出也是undefined(严格模式下用window. 调用函数,函数内部this 才会指向 Window 对象)。 回到我们的具体问题。进入断点时 console.log(this) 输出了内容,而直接在控制台写 this 执行或者鼠标移到断点处的 this 上显示 undef...
函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。 本来记住这几点已经可以了,this最终找到是可能window,但是undefined是怎么又是怎么来的,本妹子下面将一步步分析。 二、问题点:undefined是怎么来的 综上所述,this指向运行时所在的对象或指向定义时所在的对象,但是这个对象可能最后找到是window,但都...
改变this指向,this为undefined时解决方法 解决办法:三种
在严格模式下,JavaScript 中的this会指向undefined,主要原因有三个:编程模式的更改、提高代码的安全性、以及易于调试。在严格模式下,避免了this默认指向全局对象的情况,减少了全局变量的创建,从而提高了代码的安全性。 一、编程模式的更改 在JavaScript的发展过程中,随着ES6的推出,引入了“严格模式”(use strict)的概念...
这样一个问题,我兴奋的以为,我找到了答案。但被事实狠狠打大了一把脸。这里问的主要是因为 babel ES2015模块是隐式严格模式的,所以即使是上方第一个问题用普通函数输出也是undefined(严格模式下用window. 调用函数,函数内部this 才会指向 Window 对象)。
综上所述,this指向运行时所在的对象或指向定义时所在的对象,但是这个对象可能最后找到是 window ,但都不可能是 undefined ,那么 undefined 是怎么来的呢?我们一般写js文件都是 babel 转成 ES6 的, babel 会自动给js文件上加上严格模式。用了严格模式 "use strict" , 严格模式下无法再意外创建...
也就是说当我们通过一个按钮去触发事件的时候,事件中的this指向的是window,所以我们对比着去理解也就明白了为什么React中指向的是undefined,因为React中指向的window,但是我们想让它指向的是当前的类组件的实例,所以babel严格模式下就指向了undefined。 构造函数中this指向类的实例。
是指向啥就是啥。根据执行环境不同 this 指向不同 比如你在chrome 的控制台 this 就是 undefined ...