[JS] 31. JavaScriptの変数
5321 ワード
1)グローバル変数
var f1 = function(){
a= 1;
var a;
alert(a);
alert(window.a);
}
結果はundefinedです./alert(a)は1を出す.
functionでは、変数を宣言する前に(a=1;到)、aはグローバル変数に入る属性である.
変数を宣言すると、1を代入する意味がありません.(グローバル変数ではありません.)
したがって、
alert(window.a);
地域変数を利用する.まずvarを識別する優先度はa=1である.この地域の変数になる.
window.a
中aはグローバル変数var a中aは領域変数である.var f1 = function(){
a= 1;
var a;
a++
alert(a);
alert(window.a);
}
alert(a);2を出す.同じ変数を複数回宣言します.
両方ともグローバル変数です.
出張が間違っているのは普通だが,出られない.
var a = 1;
var a = 2;
alert(a);
かっこを使用する場合:
結果は1です.
カッコを使用して変数を宣言する場合、JavaScriptでカッコを使用しても意味がありません.
{
var a = 1;
}
alert(a);
alert(a);
{
var a = 1;
}
2)グローバル変数とゾーン変数
function f1(){
var a = 1;
}
f1();
alert(a);
関数の変数
エラーが発生しました.
function f1(){
a = 1;
}
f1();
alert(a);
ここでaはグローバル変数であるため,結果は1である.
関数で宣言されたグローバル変数
function f1(){
var a = 1;
f2();
function f2(){
var a = 2;
f3();
function f3(){
var a = 3;
}
console.log(a);
}
}
f1();
console.log(a);3は出力、
var a = 3;ない場合は2が出力となり、
var a = 2;ない場合は1を出力します.
領域内でグローバル変数になります.
function f1(){
var a = 1;
f2();
function f2(){
a = 2;
f3();
function f3(){
console.log(a);
console.log(window.a);
}
}
}
f1();
console.log(a);
は2、console.log(window.a);
は未定.したがって、a=2;グローバル変数ではありません.
同じ名前で外にいると、グローバル変数はだめです.
グローバル変数を意図している場合は、グローバルオブジェクトを使用することが望ましい.
a = 2;乙
window.a=2;
と書く.外部の内部機能のため、メモリからクリアできないという問題があります.
3)キャビネット
function f1(){
var a = 1;
return a;
}
var a = f1();
alert(a);
function f 1にはprimitive typeがあるのでreturn aのaはオブジェクトです.
非参照値を返します.
そしてvar a=1;中1はまた1つの箱になって、aを参照して1を加えます.
return aとなった瞬間、関数f 1()内は全て消失する.
function f1(){
var a = 1;
return function f2(){
return a;
}
}
var f = f1();
var a = f();
alert(a);
function f 2はオブジェクトなので、戻りは問題ありません.
ここで、aはローカル変数ではなく、f 1のvara=1である.使用します.
f 1から戻った後、使用するリソースは消えるべきであるが、f 2の戻ったa;したがって、f 1のリソースは消えない.
f 2はf 1(outer function)が閉じるかどうかを決定する鍵である.このコールバック関数を「閉じる」と呼びます.
つまり、外部接続の変数を使って外部を消さないのがエンクロージャです.
function f1(){
var a = 1;
return function(){
console.log(a);
return a;
}
}
var closurefunction = f1();
closurefunction();
closurefunction = null;
4)関数オブジェクト
関数は簡単に渡すこともできます.
関数はオブジェクトなので、関数のパラメータとして渡すことができます.
printの関数()が渡されているパラメータ.
ソート基準はsortに渡すことができます.
1)
var nums = [4,7,3,1,6,3,2,11,9];
console.log(nums);
nums.sort();
console.log(nums);
2)
var nums = [4,7,3,1,6,3,2,11,9];
console.log(nums);
nums.sort(function(a, b){
return a - b; //오름차순 b-a는 내림차순, 0이면 그대로
});
console.log(nums);
3) var exams = [{kor:10, eng:30}, {kor:32, eng:42}, {kor:19, eng:90}];
console.log(exams);
exams.sort(function(a, b){
return kor.a - kor.b; // 원하는 기준으로
});
console.log(exams);
5)Javaスクリプトデータフォーマットのタイプ
typeofはprimitiveパッケージtype(基本型)の演算子です.
基本型を除いてobjectで現れる.
注意すべき演算.
1)objectでなくてもobjectが現れる.
2)どちらもfalseなのでtrue
3) false
Array独自の検証方法はisArrayです.
int型ではビットが不足し、オーバーフローする可能性が高い.△変な数字が出てきた.
末尾にnを加えると、大きい整数型、大きい整数型を表すことができる.
Reference
この問題について([JS] 31. JavaScriptの変数), 我々は、より多くの情報をここで見つけました https://velog.io/@psh94/JS-31テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol