一通りpythonの基礎はできてきたかなと思って求人を色々見ていると
関西とかでは実務なしのpythonエンジニアはかなり狭き門と感じたので、
フロントエンドもかじってみようとjavascriptも始めることに。
書き方はpythonと似たようなところがあるのでそんなに違和感なくできてる感じです。
とりあえず無料でもしっかり勉強できそうなところで
英語がメインではありますがfreeCodeCampで初歩からスタート。
https://www.freecodecamp.org/learn
とりあえず基礎をメモ的にまとめてみる。
変数定義
前はvarを使っていたがローカルにおいてもグローバルに使えてしまってややこしいので
今はletやconstを使う。
letは定義したものは変更できるけど、
constは基本的にはできない。(配列を定義した場合、配列内のデータは変えられる)
for文、while文、do while文
for文はほぼpythonにも似てる感じ。
let jsnum = 0;
for ( let i = 0; i < 10; i++) {
jsnum = i++;
}
console.log(jsnum);
pythonなら
pynum = 0
for i in range(10):
pynum += 1
print(pynum)
while文
js
let jsnum = 0;
while(jsnum < 10) {
jsnum += 1;
}
console.log(jsnum);
pynum = 0
while pynum < 10:
pynum += 1
print(pynum)
jsにはdo whileというwhileに入る前に1回whileの処理ができる構文がある
let jsnum = 0;
do {
jsnum += 1;
console.log(jsnum);
}
while(jsnum < 10);
console.log(jsnum);
再起関数
pythonではわからなかったけどjsで勉強してようやくわかった。
関数の中に自身の関数を入れてforを使わず回転させる。
function arrayLength(array) {
if(_.isEmpty(array)) { // isEmpty : 配列要素が空ならtrueを返す
return 0;
} else {
return 1 + arrayLength(_.rest(array)); // rest : 配列から先頭要素を除いた配列を返す
}
}
arrayLength(nums); // 5
複数のループもできる
function countdown(n) {
if (n < 1) {
return [];
} else {
const arr = countdown(n - 1);
arr.unshift(n);
return arr;
}
}
function rangeOfNumbers(startNum, endNum) {
if (endNum - startNum === 0) {
return [startNum];
} else {
const arr = rangeOfNumbers(startNum, endNum - 1);
arr.push(endNum);
return arr;
}
};
rangeOfNumbers(1,4); // [1,2,3,4]が出力される
if elseを使わず分岐ができる 構文
if/elseを使わず、trueかfalseで動作を分けたい場合は? a :b でできる。
例
return a > b ? "a is true": "b is false";
条件は複数追加することも可能
例
function checkSign(num) {
return (num == 0) ? "zero" : (num > 0) ? "positive" : "negative";
}
checkSign(10);
時々出てきたこの構文よくわかってなかったけどこれで納得。
その他よく使うファンクション
.push()は配列を最後に追加
.pop()は配列の最後のデータをとる
.shift()は最初のデータをとる
.unshift()はデータを配列一番最初に追加する
a.concat(b) 配列a,bを結合する