首页 > 解决方案 > 为什么从绑定函数返回的 `this` 不严格等于传递的原始值?

问题描述

我注意到this从绑定函数返回的值并不严格等于绑定时传递的原始值。

根据MDN,调用原始函数时[[BoundThis]]会通过。

this绑定函数返回什么?是[[BoundThis]]吗?

const fn = function() { return this }
const strBound = fn.bind('111')
const numBound = fn.bind(111)
const boolBound = fn.bind(true)

console.log(strBound()) // [String: '111']
console.log(strBound() == '111') // true
console.log(strBound() === '111') // false

console.log(numBound()) // [Number: 111]
console.log(numBound() == 111) // true
console.log(numBound() === 111) // false

console.log(boolBound()) // [Boolean: true]
console.log(boolBound() == true) // true
console.log(boolBound() === true) // false

标签: javascript

解决方案


您的函数未处于严格模式,这意味着它将始终将其接收到this的值隐式转换为对象(并在接收null/时使用全局对象undefined)。您的代码将按预期工作

function fn() {
    "use strict";
    return this;
}

请注意,没有bind.


推荐阅读