Heim  >  Artikel  >  Web-Frontend  >  js-Ausführungskontextvariablen, Funktionen usw

js-Ausführungskontextvariablen, Funktionen usw

不言
不言Original
2018-07-05 17:25:212088Durchsuche

In diesem Artikel geht es hauptsächlich um Variablen und Funktionen für die Ausführung von js. Jetzt kann ich ihn mit allen teilen, die ihn benötigen.

Ausführung im JavaScript-Kontext und Aufrufstapel

ES6-Variablenumfang und -förderung: Detaillierte Erläuterung des Variablenlebenszyklus

Variablenförderung

  • Die Definition von Variablen finden Sie in Definieren Sie beim Vorbereiten

  • am oberen Rand des Bereichs ohne Variable ohne Variablenförderung

console.log(a);  // undefined,如果没有定义会直接报错
var a = 'aaa';
console.log(a);  // aaa

// 下面代码全等于上面代码
var a;  // 变量提升,函数作用域范围内
console.log(a);  // undefined
a = 'aaa';
console.log(a);  // aaa

console.log(a);  // 直接报错
a = 'aaa';

Funktionsförderung

  • Die Definition der Funktion wird beim Code-Vorparsen oben im Bereich definiert

  • Die Funktionszuweisung befindet sich oben im Bereich

console.log(f1);  // f1() { console.info('函数'); }
var f1 = function() { console.info('变量'); }
console.log(f1);  // ƒ () { console.info('变量'); }
function f1() { console.info('函数'); }
console.log(f1);  // ƒ () { console.info('变量'); }

// 下面代码全等于上面代码
var f1;  // 定义提升
function f1() { console.info('函数'); }  // 函数顶部赋值
console.log(f1);  // f1() { console.info('函数'); }
f1 = function() { console.info('变量'); }
console.log(f1);  // ƒ () { console.info('变量'); }
console.log(f1);  // ƒ () { console.info('变量'); }

Funktionskontextbeziehung

  • Der Kontext der Funktion wird bestimmt, wenn sie definiert wird

var scope = "global scope";
function checkscope() {
  var scope = "local scope";
  function f() { return scope; }
  return f;
}
checkscope()();  // local scope

dieser Kontext

  • this Der Kontext wird zur Ausführungszeit bestimmt

Normaler Funktionsaufruf, dieser zeigt auf das Fenster

// 在 function 里
function test() {
    var type = this === window;
    return type;
}
test();  // true

Methodenaufruf , dies zeigt auf das aufrufende Objekt

// 在对象里
var obj = {
    test: function() {
        var type = this === obj;
        return type;
    }
};
obj.test();  // true

// 在 prototype 对象的方法中
function obj() {
}
obj.prototype.test = function() {
    return this;
}
var o = new obj();
o.test() === o;  // true

Konstruktorfunktion Aufruf, dies zeigt auf das Objekt, das durch new generiert wurde

// 调用 new 构造对象时
function obj() {
    this.test = function() {
        return this;
    }
}
var o = new obj();
o.test() === o;  // true

apply / call Aufruf

function test() {
    return this;
}
var o = {};

// apply
test.apply(o) === o;  // true

// call
test.call(o) === o;  // true

Im Ereignisattribut von dom

// 点击后输出 true
<input id="a" type="text" onclick="console.info(this === document.getElementById(&#39;a&#39;))" />

// 点击后输出 true
<input id="a" type="text" />
<script type="text/javascript">
    document.getElementById(&#39;a&#39;).addEventListener("click", function(){
        console.info(this === document.getElementById(&#39;a&#39;));
    });
</script>

// 点击后输出 true
<input id="a" type="text" />
<script type="text/javascript">
    document.getElementById(&#39;a&#39;).onclick = function(){
        console.info(this === document.getElementById(&#39;a&#39;));
    });
</script>

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, Sie können daraus lernen. Hilfreiche Informationen. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website!

Verwandte Empfehlungen:

JS und JQ realisieren den Fokusdiagramm-Karusselleffekt

js realisiert die Bearbeitung durch Klicken auf die Schaltfläche

Über JS Einführung in die Vererbung

Das obige ist der detaillierte Inhalt vonjs-Ausführungskontextvariablen, Funktionen usw. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn