2014年6月19日木曜日

PCソフトウェア>JavaScriptで演算子の'+'が機能しない

[現象]
数式を記述し、'+'で数値演算を行っているつもりだが、なぜか文字列の結合になってしまう。
'-'など他の演算子は、正常に動く。

[原因]
変数の宣言が不十分

[解説]
JavaScriptでは、変数の型を宣言しなくとも、スクリプトの実行には特に障害がない。それは、JavaScript(あるいはブラウザ?)側で、適当に解釈し、文字列処理か数値演算かを判断・実行しているため。
文字列処理と判断されると、
'3'+2='32'
3+2=5・・・・・・・・・>こちらではない
と文字の結合になってしまう。

[回避方法]
①'+'を使用しない
演算子の'+'を使用せず、'-'を使用する。ぱっと見、わかりにくい。
× a=a+b;
○ a=a-(-b);

②varで変数の宣言を行う
宣言とか特にしなくとも、動作するが、varとNumberオブジェクトで、変数をNumberオブジェクトに格納し、数値型に変換して、演算をする。こちらの方が、後から見た時、わかりやすい。

var Number(b);
a=a+b;

※varを省略すると、グローバル変数として認識される。

③演算の前に、変数が数値型である事を明示する
具体的には、使用する数値に、値の変わらない演算をしておく。後から見返すと、よくわからなくなる。

b=b-0;
a=a-0;
a=a+b;

④文字列→数値へ変換する関数、parseInt()、parseFloat()を使用する

parseInt(文字列 {、基数})→整数に変換
parseFloat(文字列 {、基数})→小数に変換

・パラメーター
文字列:変換する文字列
基数:省略可。進数を指定(2,8,10,16)。省略時は10進法となる

・戻り値
文字列の先頭が数値でない・空文字→NaNを返す
数字で始まり、途中から数字でないものを含む文字列→数字の部分までを数値に変換する


※スクリプト関連の予約語('JavaScript'など)を、半角文字で記述すると、本エディッタが混乱するのか、文法チェックでエラーとなり保存できないので、全角文字にしてある。

(単なる、メモ書きなので、間違いがあるかもしれない。)
+++

0 件のコメント:

コメントを投稿