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