JS[クリアコード]|コードと関数式
6758 ワード
ハウスティンとは何ですか。
コード作成はJavaScript固有の特性であり、コードの最上位に宣言されたように動作します.
変数の宣言と割り当て
JavaScriptは、宣言と割り当てを分離します.
関数宣言実行時より前にJavaScriptエンジンによって最初に関数オブジェクトが生成されたことを宣言します.したがって、実行時に関数宣言文の前に関数を参照および呼び出すことができます.これを関数反発と呼ぶ.
へんすうかそく
console.log(a); //undefined
let a=10;
console.log(a); //10
宣言は実行時より前に実行されるため、変数宣言の前にコンソールも実行されます.log(a)は参照エラーが発生せず、初期化値undefinedを出力する.実行時に値が割り当てられるため、値が割り当てられ、行に正常にa値が出力されます.関数式
関数式は、変数に関数を割り当てます.関数式は変数のシースで動作します.変数宣言は実行時までに生成され、変数はundefinedに初期化されます.変数に割り当てられた関数は、実行時に計算されるため、関数式の前に参照または呼び出すことはできません.
関数の加速
関数宣言によって定義された関数は、実行前に関数オブジェクトを最初に作成します.実行時に関数オブジェクトが作成されているため、関数宣言文の前に関数を参照および呼び出すことができます.
関数式と関数宣言、すなわち変数シースと関数シースの違いは、次の例のコードで確認できます.
console.log(add(1,2))//3
console.log(sub(1,2))//undefined
function add(x,y){
return x+y;
}
const sub = function(x,y){
return x-y;
}
かくせんたくもんだい
コードを記述すると、予知できない実行結果が発生します.
// 함수 호이스팅으로 변수를 덮어쓴다.
var sum;
console.log(type of sum); //function
function sum(){
return 1+2;
};
// 변수에 할당 값이 있으면 분리 가능
var sum = 10;
console.log (sum()); // sum is not a function
function sum(){
return 1+2;
};
// 함수 표현식을 사용, const를 사용하여 에러도 표기됨
console.log(sum); // Cannot access sum before init
const sum=function(){
return 1+2;
};
ハウスティンのトラブルシューティング
-講座:クリーンコードJavaScript
-書籍:モダンJavaScript DeepDive
Reference
この問題について(JS[クリアコード]|コードと関数式), 我々は、より多くの情報をここで見つけました https://velog.io/@mogooee/JS-클린코드-호이스팅과-함수표현식テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol