[混攻]Javascript-5

2342 ワード

関数と変数

let student = '이강민';
function man(student1){
    student1 = '김광민';
}
man(student);
console.log(student);
上のコードで、コンソールウィンドウに表示される値はどれですか?
一般的にstudent 1の値は「金光民」と再定義され、学生に金光民が現れる見通しだ.
しかし、コンソールの窓には李江民の身代が表示された.どうしてこんなことになったの?
パラメータとして入力した学生の値は李江民、学生1の値は金光民である.上のコードでは、李江民の文字列は金光民の文字列と同じ値と定義されており、本当に偽物だ.李江民=金光民か.true
では、学生の価値を金光民に変えたいなら、どうすればいいのだろうか.
やさしい学生定義すればいいです.
以上のように,学生はletで定義し,関数実行後,学生1の値を「入れる」と定義して,「金光民」の値に変換する.

では、オブジェクト上ではどのように操作すればいいのでしょうか。

let student = {
    name : '이강민',
    age : 29
}

function man(student1){
    student1.age++;
}

man(student);

console.log(student.age); // 30;
上のコードはstudentという名前のオブジェクト名を宣言し、関数にオブジェクトを入力するときにオブジェクトの値を増やすコマンドが含まれています.
ここで、studentの参照値とstudent 1の参照値は、ageの増加に伴って出力される同じ場所を指す.
参照値アドレスが同じ場合は、オブジェクト名が異なる場合でもconstが同じ値を変更できます.

匿名関数、関数に関数を作成する匿名関数


宣言関数と呼ばれる関数を作成するときに、関数名を直接使用して作成します.
function a(){
	console.log('hi');
}
a(); // hi
匿名関数は逆に,関数名を関数に書き込むのではなく,変数のように関数名を宣言する.

匿名関数の宣言

let a = function(){
	console.log('hi')
}
a(); // hi
暗黙関数と匿名関数は同じ機能を持ち,これは表現の違いである.

関数の中の関数?

function c(fn){
    fn();
}

c(function(){
    console.log('hi');
}); // hi
関数を作成するときに、cという関数を宣言的に作成し、パラメータを関数に設定します.
したがって、匿名関数を単独で宣言しなくても、宣言関数の関数名がパラメータ名であるため、エラーは発生しません.
理解するために.
fn=function(){console.log(“hi”)}.

チェーンコール


オブジェクト内のキー値を匿名関数の変数名に設定して呼び出す動作
let man = {
    name : '이강민',
    age : 20,
    greet : function(){
        console.log('안녕');
        return this; // 함수가 실행되면 다시 man을 return 시킴 
    }
}


let a = man.greet(); //안녕을 콘솔출력하고 다시 객체로 리턴

console.log(a);// a로 함수가 실행되고 man으로 리턴됬기 때문에 객체가 출력됨

console.log(man.greet()); // 객체로 리턴됨. 

a.greet(); //a가 man으로 리턴되었기에 man.greet();와 같아짐. 

//아래 함수는 객체로 return 하기에 같은 값의 변수와 그 에 해당하는 객체를 불러 올 수 있는 것이다.

let b = a.greet();
let c = b.greet();
let d = c.greet();

//이것을 체인 호출이라고 한다. 
//계속 객체인 man으로 return 시키기에 가능한 것이다. 
man.greet()
    .greet()
    .greet()
    .greet()
    .greet()
    .greet();