関数 のつづき
入れ子の関数とクロージャ
の部分でまたクロージャ登場。
function outside(x) {
function inside(y) {
return x + y;
}
return inside;
}
fn_inside = outside(3); // このように考えてください : 与えられたものに 3 を加算する関数を代入します
result
… の部分でまたクロージャ登場。
function outside(x) {
function inside(y) {
return x + y;
}
return inside;
}
fn_inside = outside(3); // このように考えてください : 与えられたものに 3 を加算する関数を代入します
result
… do 文 while (条件式);
順序:文実行→条件式チェック(true)→文実行→条件式チェック(true)→・・・
条件式がfalseを返すまで上記ループ。
ループ中のcontinue→その時点でその回は終了して条件チェックに飛ぶ(for文の場合加算式に飛ぶ)。そしてループ再開。
ループ中のbreak→その時点で一番内側のループを即終了し脱出する。
の部分で「関数宣言前にその関数を呼びたすのは可」だが、「関数式の前にその関数を呼び出すのは不可」が書いてある。詳しくは↓で。
…
+(プラス)演算子の使い方について。
例) let ans=5 + ‘7’;
console.log(ans); //ans=’57’ (←文字列)
文字列(‘7’)と数値(5)を+でつなぐと数値(5)が文字列(‘5’)に型変換されて、文字列の結合が行われる。どこにでも解説があるやつ。
例) let ans1=+’8′;
let ans2=+’8’+2; //ans2=10(数値)
console.log(typeof ans1); // number
+
を数値でない値の前に記述すると、数値への型変換が行われる。
この他に数値へ型変換する方法としてparseInt()
関数がある。これを使った方がわかりやすいと思われる。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Grammar_and_Types
var str = 'this string \
… クロージャについては最初、
https://asciidwango.github.io/js-primer/basic/function-scope/
に記述があり、それを見ていた。
や
について説明しており、関係はあるのだと思うが、いまいち具体的にまとめられなかった。
次に見つけたのが
この記事にあるコードで説明がつきそう。
function makeFunc() { var name = "Mozilla"; function displayName() { alert(name); } return displayName; } var myFunc = makeFunc(); myFunc();
関数makeFunc内で宣言された変数name。これはmakeFunc関数の呼び出しが終わったらガベージコレクションにより消えるんじゃないのか?という話。
しかし
var myFunc = makeFunc();
により変数myFuncには関数…
スコープが異なればletやconstで同じ名前で変数宣言してもよい。
https://asciidwango.github.io/js-primer/basic/function-scope/(関数スコープとvarの巻き上げ、の部分)
よってletでの変数宣言の前にその変数を参照するとReferenceError
となる。
varでの変数宣言の場合巻き上げ(hoisting)が行われるのでエラーは出ずundefinedとなる。
https://asciidwango.github.io/js-primer/basic/function-scope/(関数宣言と巻き上げ、の部分)
関数宣言→巻き上げが行われる。つまり関数宣言より前の行でその関数を呼び出してもOK。
関数式→変数宣言部分のみ巻き上げられるので暗黙的にundefinedとなる。よって関数を呼び出せない(Type error)。
…ソース例
var jikoshokai=function(){
console.log(“My name is”+this.name+”!!”);
}
//勇者オブジェクトのインスタンスbraveman1作成
//勇者オブジェクトのインスタンスのnameプロパティに代入
//勇者オブジェクトのインスタンスのjikoshokaiメソッドに上で
//作った関数オブジェクトを代入
var braveman1=new Object();
braveman1.name=” 勇者no1 “;
braveman1.jikoshokai=jikoshokai;
//勇者インスタンスのjikoshokaiメソッドを呼び出し。
//この中のthisは勇者インスタンスbraveman1を指す。
braveman1.jikoshokai();
オブジェクトのメソッドが呼び出されたときに、thisはそのオブジェクト自体を表す。
参照(https://www.sejuku.net/blog/25328)
ソース例
//コンストラクタPersonを定義↓
SEO対策の基本的なことがら(これからすべきこと)をまとめる。
アンカーテキストはリンクの文字列のこと。よくやるやつで、
詳しくはこちら
でこちら、の部分がリンクの場合「こちら」がアンカーテキスト。ユーザーにとっては別にこれでもよい気もするが、SEO的にあまりよくないと。まとめると、
アンカーテキストは、
①リンク先ページの内容を説明する言葉
②キーワードを含めた言葉(アンカーテキストにキーワードを含めた場合リンク先のページがSEO上の評価が高くなる傾向があるらしい。ただやりすぎないこと。)
③長すぎない
ということ。なので「こちら」みたいなのは直した方がよいと。
基本的にはアンカーテキストと同じこと。
タイトル、ディスクリプションは検索結果に表示されるため、具体的なキーワードがあるとユーザーにも検索エンジンにもわかりやすいと。
またタイトル(ページのタイトル)によりクリック率が大きく変わるので、そこを意識してアピールすること。
…