js-notes

不言
不言オリジナル
2018-04-26 14:31:201315ブラウズ

この記事では、JS のメモをいくつか紹介しますので、興味のある方はご覧ください

1. JS は 1 回プリコンパイルされます。意味は非常に明確です。まず a を宣言し、次に a が存在するかどうかを判断し、存在しない場合は 1 に代入します。この代入ステートメントがウィンドウ内に常に存在することは明らかなので、結果は次のとおりです。は未定義です。

2. 関数宣言は変数宣言を上書きしますが、変数割り当ては上書きしません

var a; 
if (!(“a” in window)) { 
   a = 1; 
}

できるだけ早く、変数宣言は以下で定義されていますが、変数値は依然として関数であることを意味します。この場合、

関数宣言の優先度は変数宣言の優先度よりも高くなりますが、変数値が代入されると結果はまったく異なります:


function value(){ 
   return 1; 
} 
alert(typeof value);    //”function”

値が代入された後、変数代入の初期化により関数が上書きされます宣言。



浅いコピーは基本的なタイプのデータのみをコピーします。配列またはオブジェクトの場合、そのメモリアドレスのみがコピーされるため、メタオブジェクトが改ざんされる可能性があります。 -compiled;

function value(){ 
   return 1; 
} 
var value = 1; 
alert(typeof value);    //”number”

このように、質問の意味は非常に明確です。まず a を宣言し、次に a が存在するかどうかを判断します。存在しない場合は、それに 1 を代入します。がウィンドウ内に存在し、この代入ステートメントは実行されないため、結果は未定義です。


2. 関数宣言は変数宣言を上書きしますが、変数割り当ては上書きしません

function copy(p) { 
   let c = {}; 
   for(let i in p) { 
       c[i] = p[i]; 
   } 
   return c; 
}

できるだけ早く、変数宣言は以下で定義されていますが、変数値は依然として関数であることを意味します。この場合、

関数宣言の優先順位は変数宣言の優先順位よりも高くなりますが、変数値が代入されると、結果はまったく異なります:


var a; 
if (!(“a” in window)) { 
   a = 1; 
} 
alert(a); // undefined

値が代入された後、変数代入の初期化は変数の代入の初期化によってオーバーライドされます。関数宣言。


浅いコピーは基本的なタイプのデータのみをコピーします。配列またはオブジェクトの場合、そのメモリ アドレスのみがコピーされるため、メタオブジェクトが改ざんされる可能性があります。



関連する推奨事項:


jsの別の書き方


jsを使ったファジークエリ実装の詳しい説明

以上がjs-notesの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。