変数は、大文字と小文字を別物と判断する。
windows上では区別しないけど、プログラム上では別物と扱われる。
ほとんどのプログラム言語では別物とみなされるので注意。
変数の宣言
let abc;
(レット)
そもそもはデータ型を宣言するという意味あい。(文字か? 数字か?)
ところがJavaScriptはデータ型を自動的に推測するようになってる言語(オートキャスト型)なので、きっちりと型を宣言しなくても大丈夫。
↑
↓
JAVAではきっちりとデータ型を宣言しないといけないらしい。
逆に言うと途中で変わっちゃう。
数字の変数だったものに文字列を入れたら同じものが文字変数になってしまう。
できれば変数を宣言したほうがお行儀がよろしいです。
なお宣言場所は一か所にまとめておく。
ただしlet自体が新しいものなので、IEなどで対応していないことがある。
(letはES2015から利用できるもの)
昔のvar(バー)のほうがいま現在無難の状況にある。
スマホでもletで動かない場合がある。
var
(変数ですよ)
>「variable」の略で、var要素はプログラムなどのソースの変数または引数であることを表します。
変数は、数でもいいし文字列でもいい。
”変わる可能性のある何か”のこと。
↑
↓
定数(ていすう)
1とか。ただの文字列の"xyz"とか。(ただの文字列に他の値を代入はできない)
つまりプログラムにあるのは、
プログラムの予約語
変数
定数
演算子(=とか)
となる
(おぼえがき)
一応letとvarは挙動が違うらしい。
>①変数の重複許容 var => 許す let => 許さない
varは変数の重複を許容しますが、letは許容しません。
②ブロックスコープの認識 var=>認識しない let=>認識する
letの方がより細かく変数の有効範囲を管理できます。
なんとJavaScriptには、ブロックレベルのスコープが存在しません!!
(JavaやPHPなどの言語からすると驚きですよね。。。)
たとえばif文など
if (true) {
var i = 1;
}
console.log(i); // 1と出力
この様に
ブロックを抜けたあとでも、変数iが有効になります。
これがletだとちゃんとスコープを認識します
if (true) {
let i = 2;
}
console.log(i); // 変数iはスコープ外なのでエラーとなる
これは、良いですね!違和感がなくなります
https://qiita.com/sumisumis/items/f95c0a48a7e155d2cb86
test1.js--->
let abc;
abc = 1+1;//代入演算
abc = abc+1; //abcは数字の変数
abc = abc+"xyz"; //abcは文字変数になってしまった
abc = abc+5;
console.log('abcの値は'+abc);//abcの値は3xyz5
代入の処理の順番:
イコールの右側から先に計算される。
それを左側に投入するイメージ。
省略表記
普通は
abc = abc+5;
とはもう書かずに、
abc += 3;
と書く。(プラスイコール)
先に足し算してから代入してよねという意味。
choco *= 2;
これをかけて代入してね、という。
var choco;
choco = 3;
choco *= 2;
console.log('chocoの値は'+choco);
宣言するときに同時に初期値を入れることもある。
普通なにもしないと初期値が数値型なら0,
真か偽ならfalseで初期化される。
var orange = 3;
console.log('orangeの値は'+orange);
宣言は一括して同じ場所で宣言しましょう。
?どうなんだろう。いったん変数を宣言して値代入したあと、同じ変数を宣言したらその値は??
→
自分で実験した結果:
varの場合、同じ変数名を宣言しても前の変数の値がそのまま残っていた。
letの場合、consoleでエラーがでる。
(Uncaught SyntaxError: Identifier 'bcd' has already been declared)
#
16進数を書きますよという意味。