Paepoi

Paepoi » JavaScript Tips » JavaScript その他

JavaScript その他

# 最終更新日 2024.01.03

let, const
let 宣言された変数はブロック内スコープになる
もう var を使うのはヤメにしましょう
let letStr = 1;
var varStr = 1;

// 同一ブロックでは let 宣言の多重定義は Error になる
//let letStr = 4;

// var 宣言はブロック内スコープにならない
if (true) {
    let letStr = 2;
    var varStr = 2;
    let letBlock = 3;
    var varBlock = 3;
}

console.log(`letStr=${letStr} varStr=${varStr} varBlock=${varBlock}`);
//=> letStr=1 varStr=2 varBlock=3
try {
    console.log(letBlock);
} catch {
    console.log('letBlock は参照できません');
}

// const は他の言語と同様に変更できない定数になる
// 関係ないけど Swift では定数が let なのはややこしい

const OM_SYSTEM = 'マイクロフォーサーズ';
try {
    OM_SYSTEM = 'const に再代入とかしようとすると';
} catch {
    console.log('例外になっちゃうよーん');
}

非同期で実行
色々な書き方があるけど非同期にしたいだけなら以下が一番簡単
Promise.resolve(null)
    .then((value)=> {
        console.log('いーち');
    })
    .then((value)=> {
        console.log('にー');
        return 'さーん';
    })
    .then((value)=> {
        console.log(value);
        return 'だぁ!!!'
    })
    .then((value)=> {
        console.log(value);
    })
    .catch(function (error) {
        console.log(error);
    });

console.log('いくぞー');

/* output
いくぞー
いーち
にー
さーん
だぁ!!!
*/

三項演算子
ワンライナーのためではなく普通に便利なんです
let location = 'sftp://sasakima-nao@macbookair.local/Users/sasakima-nao';

/*
普通には以下のように書くけど何か無駄な代入が気になる
こういう場合に三項演算子を使うとスマートかつ読みやすいコードになる

let res = 'Path 名';
if (location.includes('//')) {
    res = 'URI';
}
*/
let res = location.includes('//') ? 'URI' : 'Path 名';
console.log(`引数は ${res} です`);

Copyright(C) sasakima-nao All rights reserved 2002 --- 2024.