Heim > Fragen und Antworten > Hauptteil
var leadingThirtysevenList = list.bind(undefined, 37);
Dies ist ein Codeausschnitt, den ich im Handbuch gesehen habe und der beschreibt, was die Funktion bind() tut, wenn sie den zweiten Parameter übergibt, wobei sie undefiniert als Parameter übergibt. Ich habe in einigen Frameworks auch die Praxis gesehen, undefinierte Parameter zu übergeben, konnte jedoch durch Online-Suchen keine vollständigere und klarere Antwort finden. Ich möchte Lehrer bitten, eine detaillierte Antwort zu geben.
仅有的幸福2017-05-19 10:46:01
你提供的这段代码, 为什么传入undefined和我下面的解释可能是无关的。
我主要说说其他一些框架;比如jquery就会传入undefined作为参数,并且会赋给一个空值。
那是因为js的一个bug问题, 那就是undefined能被重写!!, 是的,你没听错。
至于为什么undefined被重写会很危险呢,看下面的代码:
(function (undefined) {
let a;
// 如果a没有值则为a赋值. 但因为undefined被重写了,所以这句根本执行不到。
if (a === undefined) {
a = 'b';
}
})(true);
怪我咯2017-05-19 10:46:01
ECMAScript5.1 15.3.4.4中有解释, 当传入的第一个参数是null, undefined时, 函数的上下文将指向window (node中是global)