JavaScript 固有の演習 1

1. 「window2」という名前の新しいウィンドウを開きたい場合は、() を渡すことができます。

window.open("http://www.w3school.com.cn","window2")

分析: window.open() メソッドは、指定されたリソースを指定された名前でブラウザー コンテキストにロードします。最初のパラメーターは URL、2 番目のパラメーターは名前です。

2. 次の JavaScript コードの出力は何ですか?

var myObject = {
    foo: "bar",
    func: function() {
        var self = this;
        console.log(this.foo);   //"bar"
        console.log(self.foo);   //"bar"
        (function() {
            console.log(this.foo);   //undefined
            console.log(self.foo);   //"bar"
        }());
    }
};
myObject.func();

解析:最初の行 this.foo では、this は myObject オブジェクトを指しており、結果は "foo" です。

2 行目の self.foo では、self は myObject オブジェクトを指しており、結果は "foo" です。

3 行目の this.foo は IIFE (即時実行関数) であるため、this は window を指し、結果は未定義です。

コードを console.log(this.myObject.foo); に変更すると、結果は「foo」になります。

4行目のself.fooでは、すぐに実行される関数にはself変数がないため、スコープチェーンに沿って上方向に検索し、最後に2行目と同様にmyObjectを指し、結果は「foo」になります。

3. 次の JavaScript コードを実行します。出力結果は () です。

var a = 4399 < 0 || typeof(4399 + '');
console.log(a);   // string

分析:まず、代入演算子の優先順位が低いことを理解する必要があるため、混乱しないでください。前の演算子が true の場合は直接 true を返し、前の値が false の場合は次の値を直接返します。

4. 以下の機能のポイントは何ですか?

setTimeout(function(){
      console.log(this); // window
},1000);

function Star(){
      console.log(this); // Star对象
}
new Star();

var o = {
      sayHi:()=>{
        console.log(this); // window
      }
}
o.sayHi();

var o = {
      sayHi:function(){
        console.log(this); // o对象
      }
}
o.sayHi();

(function(){
     console.log(this); // window
}());

分析:最初のこのデフォルトのバインディングは window を指し、2 番目の新しいバインディングは new によって作成されたオブジェクトを指します。

3 番目の矢印関数は、オブジェクト ウィンドウである上位層の this を指し、4 番目の暗黙的なバインディングは o オブジェクトを指します。

5 番目の即時実行関数。これはウィンドウを指します。

5. ({} + 'b' > {} + 'a') 戻り値は () です

console.log({} + 'b') 「[オブジェクト オブジェクト]b」
console.log({} + 'a') 「[オブジェクト オブジェクト]a」
console.log(({} + 'b' > {} + 'a')) 真実

結果は真実です

おすすめ

転載: blog.csdn.net/qq_48113035/article/details/123669670