6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

JavaScript入門してみて印象的だったこと

Posted at

はじめに

最近JavaScriptを勉強し始めたばかりですが、勉強していて個人的に印象的だっとことを復習がてらまとめます。
言語機能的な視点がメインになってる。

完全に入門者ですので間違っていることもあると思いますし、まだまだ知らないこともたくさんあるのでいろいろ教えてください。

普段はC++書いてる人です。

セミコロンがなくてもいいらしい

ある程度はセミコロンがなくても自動的に判断してくれるらしい

sample.js
    var  a = 0      //OK
    var  b = 1;     //OK

JS界隈の主流がわかりませんが、自分は怖いからセミコロンをつけておきたいと感じた

undefined

sample.js
    var  a;//初期化されていない(未定義値)
    console.log(a);//undefined

初期化されていない変数など未定義値にはそれ専用のものが用意されているようだ

###おまけ

同様にInfinity,NaN,nullとかがあるそう

===,!==演算子

初見で何者かと思うやつ

sample.js
    var a = 1;
    var b = '1';

    console.log(a == b);    //true
    console.log(a === b);   //false

データ型も等しいかチェックしたい時は===や!==を使う

むしろ1 =='1'がtrueな事に驚いた

おまけ

sample.js
    console.log(null == undefined);    //true
    console.log(null === undefined);   //false

for in

sample.js

    var hoge = { a: 1, b: 2, c: 3 };
    
    for (var paramName in hoge)
    {
        console.log(paramName,hoge[paramName]);
    }
output
a 1
b 2
c 3

オブジェクトがもつメンバ変数の名前を取得できるイメージ
operator[]でその値へのアクセスができる

class版

sample.js

        class Hoge
        {
            constructor() 
            {
                this.a = 1;
                this.b = 2;
                this.c = 3;
            }
        };
        var hoge = new Hoge();

        for (var paramName in hoge) 
        {
            console.log(paramName,hoge[paramName]);
        }

#Arrayが便利

sample.js
    [1, 2, 3]
        .map(value => value * 2)
        .forEach((value, index) => { console.log(index, value); });

便利そう(小並感)

おまけ

範囲ベースforはfor ofになる

sample.js
    var ar = [1, 2, 3];

    for (var elm of ar) 
    {
        console.log(elm);
    }

ブロックスコープがない

sample.js
    {
        var hoge = 1;
        var hoge = 2;
    }
    console.log(hoge);//2

変数の再宣言をしていたりスコープから外れてしまったり
こういったコードは問題なく通ってしまう

sample.js
    {
        let hoge = 1;
        //let hoge = 2; error
    }
    //console.log(hoge); error

varではなくletにすればブロックスコープを実現できる
JSに不慣れな自分は基本letにすれば良いのでは?って思った

classにアクセス指定子はない

privateとかpublicとかがないそうだ
解決策は調べるといろいろでてくる

そもそも昔はclass構文もなくfunctionでそれっぽいことしてたようで驚いた

operatorオーバーロードはできない?

C++が好きな人はこれができると嬉しい(しらんけど)

まとめ

完全な入門者の視点で印象的だったことをまとめた

入門者なのでいろいろ教えてください
まだまだ勉強途中なので続編はでるかも

Haskellを勉強すればJSとH勉強してるって言える

6
4
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?