blog

jsの「これ」理論、letとvar

もう無意味なことはやめて、コードを書いて結論を出しましょう。 結論:letには小さな特徴があります。それは、グローバルでは、letで宣言された変数はウィンドウに属さないということです。...

Sep 16, 2020 · 1 min. read
シェア

jsの関数コンテキストは

まずは小さな洋ナシから


 	function A() {
 this.m = 10;
 }
 function B() {
 this.m = 20;
 }
 A.call(B); 
 B.call(A); 
 
 let a = new A(); 
 let b = new B(); 
 
 console.log(a.m==B.m); // true
 console.log(b.m==A.m); // true
 
 

戯言は抜きにして、コードと結論へ。


	let a = 20;
 let obj = {
 a:10,
 b:function(){
 return this.a++;
 }
 }
 console.log(obj.b()); //10
 console.log(obj.a); //11
 
	var a = 20;
 let obj = {
 a:10,
 b:function(){
 setTimeout(function(){
 console.log(this.a);	//20
 
 },100);
 }
 }
 obj.b();

しかし、varをletに置き換えるとどうなるでしょうか?


	let a = 20;
 let obj = {
 a:10,
 b:function(){
 setTimeout(function(){
 console.log(this.a);	//undefined
 
 },100);
 }
 }
 obj.b();
		

結果:未定義

結論:letの小さな特徴として、グローバルではletで宣言された変数はwindowに属さなくなります。

-> 少しケース練習をしましょう!


 var b = 20;
 const obj = {
 b:10,
 c:function(){
 setTimeout(function(){
 return this.b++;
 },100);
 }
 }
 console.log(obj.c());
 

プリントを測定した結果は?

Read next

フェイントプラクティス -> ソースコード

FeignはNetflixによって開発された軽量なRESTful HTTPサービスクライアントで、vaのようにHTTPリクエストファイルをカプセル化して直接HTTPリクエストを呼び出すのではなく、va接続アノテーションを使用してHTTPリクエストを呼び出します。 同様に...

Sep 16, 2020 · 6 min read