8/24 関数 つづき javascript

関数 のつづき

入れ子の関数とクロージャ

の部分でまたクロージャ登場。

function outside(x) {
  function inside(y) {
    return x + y;
  }
  return inside;
}
fn_inside = outside(3); // このように考えてください 

8/21 繰り返しなど javascript

ループと反復処理

do…while文

do
  文
while (条件式);

順序:文実行→条件式チェック(true)→文実行→条件式チェック(true)→・・・

条件式がfalseを返すまで上記ループ。


continue文とbreak文

ループ中のcontinue→その時点でその回は終了して条件チェックに飛ぶ(for文の場合加算式に飛ぶ)。そしてループ再開。

ループ中のbreak→その時点で一番内側のループを即終了し脱出する。



関数

関数を呼び出す

の部分で「関数宣言前にその関数を呼びたすのは可」だが、「関数式の前にその関数を呼び出すのは不可」が書いてある。詳しくは↓で。

varとletの違い javascript

 

+ (プラス) まとめ javascript

+(プラス)演算子の使い方について。

文字列と数値を+でつなぐ

例)  let ans=5 + ‘7’;

console.log(ans);  //ans=’57’  (←文字列)

文字列(‘7’)と数値(5)を+でつなぐと数値(5)が文字列(‘5’)に型変換されて、文字列の結合が行われる。どこにでも解説があるやつ。


単項プラス演算子の+(プラス)

参考:+”3″+3+”3″が”63″? 意外に知られていないJavaScriptの単項プラス(+)演算子

例)  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

クロージャーについて javascript

クロージャについては最初、

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 =

varとletの違い javascript

文法とデータ型

varとletの違い、変数の巻き上げについて。

  1. varは(関数スコープ以外の)ブロックスコープがない(関数スコープはある)。letはある。
  2. varは変数の巻き上げ(hoisting)が行われる。letは巻き上げが行われない。
  3. varは同じスコープの中で同じ名前の変数を二重に定義してもよい(エラーは出ない)。letやconstではSyntaxErrorが出る。

スコープが異なれば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)。

javascript、コンストラクタ、new、thisについてまとめ

1.コンストラクタなしでのthis

ソース例

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はそのオブジェクト自体を表す。

 

2.コンストラクタの中のthis

参照(https://www.sejuku.net/blog/25328)

ソース例

//コンストラクタPersonを定義↓

function Person(name, age)

SEO対策の基本的なことがらパート2

SEO対策の基本的なことがら(これからすべきこと)をまとめる。

1アンカーテキストの最適化

アンカーテキストはリンクの文字列のこと。よくやるやつで、

詳しくはこちら

こちら、の部分がリンクの場合「こちら」がアンカーテキスト。ユーザーにとっては別にこれでもよい気もするが、SEO的にあまりよくないと。まとめると、

アンカーテキストは、

①リンク先ページの内容を説明する言葉

②キーワードを含めた言葉(アンカーテキストにキーワードを含めた場合リンク先のページがSEO上の評価が高くなる傾向があるらしい。ただやりすぎないこと。)

③長すぎない

ということ。なので「こちら」みたいなのは直した方がよいと。


2タイトルタグ、メタタグ(メタディスクリプション)の最適化

基本的にはアンカーテキストと同じこと。

タイトル、ディスクリプションは検索結果に表示されるため、具体的なキーワードがあるとユーザーにも検索エンジンにもわかりやすいと。

またタイトル(ページのタイトル)によりクリック率が大きく変わるので、そこを意識してアピールすること。