2.10 演算の優先順位、コメント

(1/1)
コメント
JavaScriptの式の評価は、算数で習ったように、乗除算は加減算より優先して実行される。各種演算の優先順位を一覧表にした。プログラムに説明を加えたり、一部のプログラムを実行させないようにするために、コメント機能を備えている。
(2024年2月11日)練習問題を追加。TeX画像をMathJaxに置き換え。

目次

演算の優先順位

JavaScriptの式の評価は、算数で習ったように、乗除算は加減算より優先して実行される。 \( 1+2 \times 3 \)の解は9ではなく7だ。
これまで紹介してきた演算の優先順位は、算数・数学で習ったものに準ずる。ここで、優先順位を一覧にしておこう。
演算の優先順位
順位演算子演算
1(...)グループ化
2i++,
i--
後置インクリメント
後置デクリメント
3!a
~a
++i
i--
typeof
論理否定
ビット否定
前置インクリメント
前置デクリメント
typeof
4**べき乗
5*
/
%
乗算
除算
剰余算
6+
-
加算
減算
7<<, >>ビットシフト
8<, <=, >, >=比較演算
9==, ===
!=, !==
等価演算
不等価演算
10&ビット論理積
11^ビット排他的論理和
12|ビット論理和
13&&論理積
14||論理和
15=, +=, -=,
**=, *=, /=, %=,
<<=, >>=, >>>=,
&=, ^=, |=,
&&=, ||=
代入演算
16,カンマ

  10: let a = 1, b = 2;
  11: let c = a / b;

  26:     if ((year >1980&& (year <1989)) {
  27:         a = 'です';
  28:     } else {

演算の優先順位が曖昧なときは、グループ (...) で囲って明示した方がいい。

JavaScriptでは、セミコロン ; までが1つの式として評価される。途中で改行しても連続した式と認識される。長い式は、途中で改行した方が読みやすいだろう。

コメント

JavaScriptでは、プログラムに説明を加えたり、一部のプログラムを実行させないようにするために、コメント機能を備えている。

1行コメント // は、これより改行までをコメントとして実行しない。

  20: //ページのロード時に実行
  21: window.onload = function() {

  22:     let ua = navigator.userAgent.toUpperCase();     //大文字変換
  23:     let res;                                        //判定結果

複数行コメント /* ... */ は、これが囲まれた部分(1行でも複数行でもいい)をコメントとして実行しない。コメントはネストできないので、*/ が出てきた時点で、すべてのコメント終了となる。

  19: <script>
  20: /**
  21:  * 計算と画面表示
  22: */
  23: function execute() {

練習問題:演算の優先順

コラム:アセンブラ、コンパイラ、インタプリタ

はじめて読む8086
コンピュータの演算や制御を司っているのは CPU(中央演算処理装置)である。インテルの Core i シリーズ、Apple M1などがCPUである。

CPUが直接理解できる命令群(プログラム)のことを機械語(マシン語)と呼ぶ。これはバイナリデータであり、CPUの種類によって変わるため、人間が見ても解読するのは難しい。
Personal CP/M
機械語の命令を、それに近い英単語(または略号)に置き換えたものがアセンブリ言語と呼ばれるプログラミング言語である。人間が読むことはできるが、CPUの種類によって変わることは同じで、そのCPUの命令体系を熟知していないと理解は難しい。アセンブラ言語で書かれたプログラムは、アセンブラを介して機械語に翻訳され、CPUが直接実行できた。
Microsoft FORTRAN
1950年代後半、CPUによる差異を無くし、人間が読みやすいように(作りやすいように)作られた FORTRANCOBOLLISP といったプログラミング言語が登場した。これらは高級言語(高水準言語)と呼ばれ、アセンブラは低級言語(低水準言語)として区別された。高級というのは「高価」という意味ではなく、人間が読める水準にあるという意味だった(高級言語の開発環境は高価ではあったが‥‥)。
Small-Cコンパイラ
当時の高級言語は、コンパイラという仕組みを介して、各々のCPUに合ったアセンブラ言語に翻訳され、最終的にCPUが直接実行できる機械語にしてから実行するというものだった。

JavaScriptは、CPUに依存しないが、コンパイラを介してプログラムを実行しているわけではない。ファイルやメモリからプログラムを逐次読み出ししてCPUに実行させている。このような仕組みをインタプリタと呼ぶ。
PHP 8
かつては、コンパイラで作られたプログラムはインタプリタより実行速度が速かったのだが、最近のコンパイラは純粋なアセンブリ言語に翻訳しなかったり、逆にインタプリタでもコンパイル機能を備えたものが登場(PHP 8:JITによる高速化)したことなどにより、両者の境界は曖昧になっている。
(この項おわり)
header