PythonユーザーによるJavascript入門①~Hello World~

 print("hello world")は、console.log("hello world");。単純な文字の出力に、ドットで挟んで2語だなんて。幸先が怪しい…。私Pythonがいい( ;∀;)。


気になった違い

・関数定義の基本動作
 pythonでは、def 関数名(arg1, arg2, …):として、インデントを下げて内部の処理を書きます。Jsでは、下のようになるらしい。defの代わりにfunctionを用いて、内部の処理は波括弧で囲う、という仕組み。rerurnが波括弧の中にきます。また、最後の行末に、セミコロンが来ると思いきや来なかったりしてます。さらに、関数定義の方法がおそらく複数存在します(アロー関数など)!!。これがなかなか複雑で、1つ1つ理解しなければならず学習コストが高い気がします。関数の呼び出し方法は同じです。括弧内の関数内変数は、letやconstを用いて定義せずに、pyhonと同じように扱えるようです。

 #Jsでの関数定義方法の基本系 
function 関数名(arg1, arg2, …){
    処理…;
    処理…;
    処理…;
    return 値;
}
 #呼び出し方法 
関数名(arg1, arg2, …)


returnがたくさんありすぎる


pythonのように書くには、最初にresult変数を定義する必要がある

・繰り返し文の基本動作
 下に処理をプリント文とした繰り返し文の比較を載せました。Jsでは、変数の定義をする必要があるので、それぞれのiでletしているというところでしょうか。また、inではなくofを用いています。他と同じように、括弧と波括弧が用いられています。

 #list1  : 要素が3つのリスト。ほとんどpythonと同じ方法で作成可能
let list1 = ["arg1", "arg2", "arg3"]
  #Jsの場合 
for(let i of list1) {
    console.log(item);
}
  #Pythonの場合 
for i in list1:
    print(item)

・listの値追加
 .push()だそうです。appendではない。



・変数のスコープ範囲
 pythonでは、関数内で定義された変数については、その関数内でしか使用することができなかった。一方、Jsではif文・while文でもスコープが働くそうだ。(pythonでwhile文で変数定義することなんてあまりないかもだけど)。おそらくブロックスコープと呼ばれ、"{ }"で囲まれる範囲でのスコープというものが、Jsには存在する。

こんな感じの奴はおそらくJsではアウト

・変数名定義のvar・let
 これらの違いは、ブロック内でのスコープがあるかないかである。結構重要…?。varがスコープ無しで、letがスコープ有り。letが現在の推奨なので、ブロックスコープは意識して構築することが良いらしい。Pythonの挙動と同じになるということかな。また、変数の再宣言がvarだと許容されるということもあるらしい。違う変数を使えばいいので、まぁlet使う。

・モジュールのインポート方法が二つある
 CommonJSと、ES6という二つの方法があるらしい。基本的にEs6を使っておけばいいが、まれにNode.js環境で、CommonJSを使う時があるらしい。Node.jsのコードには、CommonJSが多くみられる。ややこしすぎ…。

Jsの方が便利

・文字列の結合で、数字+文字列を自動で認識する
pythonでは、1+"枚"であればデータ型が異なるのでTypeErrorだが、Jsではこれができるらしい。いちいち、str( )でデータ型を変えなくてもいいのだ。


Pythonの方が便利

感想

・配列はlistとほぼ同じ。
・変数名の定義が多すぎる場合、リストを用いることがある


コードフォーマッター
Prettierを使用する。キーは、shift+alt+f

head
全体設定
子要素
・title:ページのタブの名前
・style:cssと関連
・script:jvascriptと関連(これも全体の中)
use

console.log(), dir, error()

"use strict";
文字列のみでおいておく。最新のjavascriptバージョンのみで動作させることを目的とする。エラー防止。

ファイルの文字コードは"UTF-8"。html css js全て。おそらくブラウザで動作するものは全て。

コメント行のショートカット
ctrl+/

document.getElementById("");
タグで囲まれたものを内容(コンテンツ)、タグ含めた全体を要素(エレメント)と呼ぶ。

.textcontent:nodeというオブジェクトが持つ、textcontentという値を変更するメソッド。


変数の設定時には、いちいちletをつける。バージョンによっても違う(var)

変数の変更
変更時には、letが必要ない

変数の寿命
ページ滞在時のみとか意味わからん

変数と定数
定数という概念がある。
letとconst

if文3つ以上の分岐
pythonでのelifが存在しない。else ifという2語で代替する。めんどーー

値が同じものである等号は"==="3つ
pythonで==が、jsでは===!!一つ多い。二つでも何らかの意味があるらしい

変数名だけの定義
let 変数名やconst 定数名という変数名だけの定義ちおうものが存在する

新しい演算子
&&:pyのandに等しい。かつ
||:pyのorに等しい。又は
!:pythonの、if notに等しい。反転。”! a"であり、aがFalseだと、出力がTrueになる。一文字でOK

while文はこれ。if文同様に、
"()"の中は条件文、"{}"の中はその後の処理、という形らしい。

・f文字は${変数名}。$マークが必要。エレメント毎、文字列として扱うことも可能である。変数名の部分は関数の結果でもいい。シングルクォートではない!!Pキーの右。



コマンド
window
.alart:ページ閲覧前警告
.confirm:y or n。 分岐。デフォルトでは分岐ない。input文とif文が結合したようなもの。
.prompt:confirmのようなもので、データ入力のフォーマット



ショートカットきー
shift+alt+F:現在のフォルダを開く

残余引数
…というドット三つでOK

グローバル関数
setTimeout(関数, 時間ms):time.sleep()


この記事が気に入ったらサポートをしてみませんか?