layout: post
title: “2017-07-03-study-javascript-note”
date: 2017-07-03 12:24:06 +0000
コンソールに文字列を表示したい時
console.log("Hello,World");
console.log('Hello,World');
プログラムの実行時にJSの改行をするかしないか制御できるコード
process.stdout.write("<h1>Hello World</h1>n"); ※ n は改行コード
process.stdout.write("<p>うさぎさんが噛んだ");
process.stdout.write("<strong>指を</strong>噛んだ。痛い。</p>");
数値をランダムに表示
var number = parseInt(Math.random() * 6) + 1;
console.log("モンスターが" + number + "匹現れた!");
ランダム個数、計算シミュレーション
//値段を計算する
process.stdin.resume();
process.stdin.setEncoding('utf8');
var apple_price = 450; // apple_priceリンゴの単価
var apple_num = parseInt(Math.random() * 10) + 1 // apple_numリンゴを買う数
console.log("リンゴの単価:" + apple_price + "円");
console.log("リンゴを買う数:" + apple_num + "個");
var total = apple_price * apple_num;
console.log("合計金額:" + total + "円");
コメント
// コメント
console.log('Hello,World');
計算
console.log(7 + 5); // 結果:12
console.log(8 - 4); // 結果:4
console.log(3 * 5); // 結果:15
console.log(6 / 2); // 結果:3
console.log(7 % 2); // 結果:1
console.log("7 % 2"); // クオートで囲むと数式がそのまま表示される
変数
var name = "Sugar";
console.log(name);
console.log("name");
var length = 5;
var area = length * length;
console.log(area); // 結果:25
変数はPHPと同じく以下のように更新される ▼
var name = "Sugar";
console.log(name); // 結果:Sugar
var name = "Salt";
console.log(name); // 結果:Salt
var x = 1;
x = x + 10;
console.log(x); // 結果:11
省略形
x = x + 10; → x += 10;
x = x - 10; → x -= 10;
x = x * 10; → x *= 10;
x = x / 10; → x /= 10;
x = x % 10; → x %= 10;
値が1の時だけ以下のように省略できる
x += 1; → x++;
x -= 1; → x--;
文字の連結
console.log("Sugar" + "Salt"); // 結果:SugarSalt
var firstName = "Ninja";
console.log(firstName + "Salt"); // 結果:NinjaSalt
var lastName = "Salt";
console.log(firstName + lastName); // 結果:NinjaSalt
if文
var x = 10;
if( x == 10 ){
console.log("x は 10 です");
}
var x = 20;
if ( x > 30 ){
console.log("x は 30 より大きい"); // ← false なので実行されない
}
if ( x > 10 ){
console.log("x は 10 より大きい"); // ← true なので実行される
}
// 結果:x は 10 より大きい
比較演算子
< 右辺の方が大きい時 true
<= 右辺の方が大きいまたは等しい時 true
> 右辺の方が小さい時 true
>= 右辺の方が小さいまたは等しい時 true
== 右辺と左辺が等しい時 true
!= 等しくないとき true
else, else if
var x = 20;
if( x == 30 ){
console.log("x は 30 です"); // ← false なので実行されない
} else {
console.log("x は 30 ではありません"); // ← true なので実行される
}
// 結果:x は 30 ではありません
var x = 20;
if( x > 30 ){ // ← false なので実行されない
console.log("x は 30 より大きい");
} else if ( x >= 20 ) { // ← true なので実行される
console.log("x は 30 以下 20 以上");
} else { // ← すでに true の条件があったため実行されない
console.log("x は 20 より小さい");
}
// 結果:x は 30 以下 20 以上
論理演算子
&& (かつ)
条件Aと条件Bの両方を"true"した場合に全体も"true"になる。
var x = 20;
if( x > 10 && x < 30 ){
console.log("x は 10 より大きい、かつ 30 より小さい");
}
// 結果:x は 10 より大きい、かつ 30 より小さい
|| (または)
複数の条件のうちひとつでも"true"の場合全体も"true"となる。
var x = 20;
if( x < 30 || x > 50 ){
console.log("x は 30 より小さい、または 50 より大きい");
}
// 結果:x は 30 より小さい、または 50 より大きい
! (条件の否定)
条件式が"true"であれば"false"に、"false"であれば"true"になる。
var x = 20;
if(!( x > 30 )){ // true になる
console.log("x は 30 以下");
}
// 結果:x は 30 以下
例題:
var x = 50;
// 変数 x が 40 でない場合の条件分岐を書いてください
if(!( x == 40)){
console.log("x は 40 ではありません");
}
// 結果:x は 40 ではありません
// 変数 x が 20 以上 70 未満のときの条件分岐を書いてください
if( x >= 20 && x < 70 ){
console.log("x は 20 以上 70 未満です");
} else {
console.log("x は 20 未満もしくは 70 以上です");
}
// 結果:x は 20 以上 70 未満です
while文 (繰り返し処理)
var jump = 1;
while ( jump <= 5 ){
console.log("わんこが" + jump + "回ジャンプした");
jump++;
}
// 結果: 1-5 までの間処理が実行され、わんこが 1→5 回ジャンプした。となる。
for文 (繰り返し処理)
1) 変数の定義
2) 条件式
3) 変数の増減式
以上の順で記述する。
for ( var i = 1; i <= 100; i++ ){
// i <= 100 の時、実行される処理
console.log(i);
}
// 結果: 1 2 3 4 5 6 7 … 98 99 100
break, continue
先ほどの繰り返し処理は条件式が常に"true"になる為、無限ループしてしまう。無限ループはコンピューターに極端な負担を与えるため注意が必要。その際に制御するために用いられるのが"break"である。
for ( var i = 1; i <= 100; i++ ){
if ( i > 5 ){ // 変数 i が 5 より大きくなると
break; // for 文を抜ける
}
console.log(i);
}
// 結果:1, 2, 3, 4, 5 (終)
そして現在の周だけをスキップし、ループそのものは継続して実行するのが"continue"。
for( var i = 1; i <= 10; i++ ){
if( i % 3 == 0 ){ // 変数iが3の倍数の時、
continue; // その周のループを終了し、次のループに入る。
}
console.log(i);
}
// 結果:1, 2, 4, 5, 7, 8, 10
例題:
for(var i = 1; i < 100; i++) {
// 「変数iが5の倍数かつ8の倍数」のとき、ループを抜けてください
if ( i % 5 == 0 && i % 8 == 0 ) {
break;
// 「変数iが5の倍数」のとき、次のループに進んでください
} else if ( i % 6 == 0 ) {
continue;
} else {
console.log(i);
}
}
// 結果:1, 2, 3, 4, 5, 7, 8, 9, 10, 11,…29, 31, 32, 33, 34, 35, 37, 38, 39
配列
配列には以下のような2種類の定義がある。
① var names = ["Sugar", "Salt", "Pepper"]; // ["Sugar",←0 "Salt",←1 "Pepper"←2];
② var names = [];
names[0] = "Sugar";
names[1] = "Salt";
names[2] = "Pepper";
配列の要素を取り出すには
var names = ["Sugar", "Salt", "Pepper"];
console.log("私は" + names[0] + "です。");
// 結果:私はSugarです。
配列に対して使える機能
『配列名.length』で要素(値)の個数を数えられる
var names = ["Sugar", "Salt", "Pepper"];
console.log(names.length);
// 結果:3
for文にも書き直せる
var names = ["Sugar", "Salt", "Pepper"];
for ( var i = 0; i < names.length; i++){
console.log(names[i]); // names.length が 3 なので、i が 0~2 の間ループする
}
例題:
var fruits = ["apple", "banana", "grape"];
// 変数fruitsLengthを宣言し、配列の要素の数を代入してください
var fruitsLength = fruits.length;
// for文を用いて、配列の値を順にコンソールに表示してください
for ( var i = 0; i < fruitsLength; i++ ){
console.log(fruits[i]);
}
配列から要素を取り出す
// "age": 14のあとに、キーと値を追加してください
var user = {"name": "wanko", "age": 14, "place": "Tokyo"};
// 連想配列userのキー"name"に対応する値を、ドット(.)を用いて取り出し表示してください
console.log(user["name"]); // ← これも
console.log(user.name); // ← これも同じ処理を実行する
// 連想配列userのキー"age"に対応する値を、[ ]を用いて取り出し表示してください
console.log(user["age"]);
console.log(user.age);
for (var key in user) {
// 変数keyの値をコンソールに表示してください
console.log(key);
// キーに対応する値を、[ ]を用いて取り出して表示してください
console.log(user[key]);
}
// 結果:
wanko
14
name
wanko
age
14
place
Tokyo
関数
function square(length) {
var area = length * length;
return area;
}
// 変数lengthを宣言し、7を代入してください。
var length = 7;
// 関数square()と変数lengthを用いて、"正方形の面積は◯◯です"と表示してください。
console.log("正方形の面積は" + square(length) + "です");
// 結果:正方形の面積は49です
関数の定義
基本形:
function 関数名 ( 仮引数1, 仮引数2, …){
処理;
return 戻り値; // 処理結果
}
console.log( 関数名 (引数)); // 関数の呼び出し(関数に与える入力値)
例題:
function triangle(width, height){
return width * height / 2;
};
console.log(triangle(3, 6));
// 結果:9
スコープ:
変数にはその変数が使える範囲を決定するスコープという概念がある。
関数の外はグローバルスコープといい、そこで定義した変数はグローバル変数、
関数の中はローカルスコープといいそこで定義した変数はローカル変数になる。
ローカル変数は関数の中でのみ有効であり、グローバル変数に影響を与えない。
関数内で定義した変数numberは、
グローバルスコープで定義した変数numberを上書きしていないことがわかる。
var number = 10;
function add(a){
var number = a + 10;
return number;
}
console.log(add(8)); // 結果:18
console.log(number); // 結果:10
例題:
var number = 10;
var a = 6;
var b = 7;
// 関数addを定義してください
function add(num1, num2){
// 関数add()の引数に変数a, bを渡し、変数numberを戻り値としてください。
// そしてコンソールに表示してください。
var number = num1 + num2;
return number;
}
// 変数addの足し算とnumberをコンソールに表示してください
console.log(add(a,b));
console.log(number);
// 結果
// 13
// 10
メモ:
- Mozilla Developer Network(MDN)のリファレンスが一番分かりやすい
- undefined: 定義されていない
- null: 何もない
- t インデント
- var s = “he’llo”;
var x;
x = 10 * 2; // 20
x = 10 % 3; // 1
// x = x + 5;
x += 5; // 6
x++; // 7
x--; // 6