<script src=”js/test8.js”></script>

僕はいつもこんなのを<head>タグの中に書いてきました。使う用途は限られていて、たいがいは必須入力項目のチェックであるとか、あるいは<a>タグでpost送信したいときとか、なので、まず無名functionを使うことはなく、jsファイルの中は普通のfunctionだらけだった。

function check(){

    なんちゃら;

}

とか

funciton henshu(){

    なんちゃら;

}

みたいなものばかり。

業務システムだと本当にそんなのばかりで、jQueryのdatepickerが出てきて少し様相が変わったかな、というくらい。

しかし、javascriptの学習を改めて始めてみると、ことごとく引っかかる。

少し前の記事で、

document.body.onkeypressedを使うときに、そのままでは、<body>タグの中に書かないと動かないという話を書きました。

そのときは、<body>タグに達しないうちに

document.body.なんちゃらが判断できなくてエラーする、とおもっていました。

const name = document.getElementById(‘yourname’);

hyouji.onclick = function(){

   なにがし;

}

これもだめです。

考えてみればイベントが発生するのはことごとく、<body>タグの中なので、これ系は全部だめでしょう。そのくらいに考えていたほうが無難です。

ほんではことごとくwindow.onload使うのか、それでもいいけど、どんなケースだって<body>タグの中に書いて動かないことはないのだから、全部<body>タグの中に書けばよいではないか、と。

それに、ずっと変数の宣言にはvarを使ってきました。

そしたら今は、letとconstらしいですね。。

varは古いブラウザ用だと言うではないですか。マジっすか。

constはjavaで言うところのstaticかfinalっぽいイメージですかね。定数的な。

しかし、ここでも独特の捉え方を強いられます。

<input>タグにidを付けたとします。

<input type=”text” id=”name”>

これを

const inputname = document.getElementById(‘name’);

とした場合、

普通にinputname.valueで入力した値が取れます。

しかし、

const inputname = document.getElementById(‘name’).value;

としてしまったらだめです。

無名functionの中では最初のなにもない状態を変数が覚えてしまい、書き換えることができないので、値はとれなくなります。

そうなると、constを使う意味ってどこにあるんかしら?と首をかしげたくなります。

javaであればstaticは非常に意味がありますよね。

使いどころではとても便利です。

finalもとてもその意図がはっきりするので迷うことはありません。

いや、慣れの問題ではあると思います。

const inputname = document.getElementById(‘name’);

この場合、inputnameは値を持つ変数ではなく、クラス変数みたいなものなので、.valueでその時々の値を取得できるのですから。

‘use strict’;

の使い所もいまいちピンときません。

最初、僕はVBAでいうところの

Option Explicit

と同じようなものかと考えました。宣言しない変数を使わせないぞ、的な。しかしそうでもありません。

(function(){
    ‘use strict’;
    const hyouji = document.getElementById(‘buttonId’);
    hyouji.onclick = function(){
        name = document.getElementById(‘yourname’).value;
        document.getElementById(‘space’).innerText = name;
    }
})();

このname = はちゃんと動作します。

let name;

などとしておく必要はありません。

しかし説明を読むとある種の規則違反はエラーにする、ということです。なので、付けておいたほうがいいのでしょう。

まだまだ謎の多い言語です。

jQueryになるともっと難解で、その挙動を利用した応用がなかなか出来ません。単純に使う分にはとても便利ではあるのですが、応用できないんです。ちょっと工夫しようとすると途端に動きません。

ま、順を追って。