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')) | 真実 |
結果は真実です