Re: 変数の加法
すぎたです。
In message news:nzuXc.162$Oc6.135@news1.dion.ne.jp
"ITAHASHI Kunio" <kunitahashi@h2.dion.ne.jp> wrote ...
> やはり、大嘘でしょうか。それとも、初期のバージョンではそう
> いう仕様もあったのでしょうか。ネットの先生方が書かれたも
> のを拝見していると、前世紀末のかなり古いときにかかれた
> 文書も多いので。
古いとはいっても、以下のような感じです。
1995年 6月 JavaScriptの前身のLiveScriptが実装されたNN2b1をリリース
1996年12月 Netscape社とSunが提携し、JavaScript1.0となる
1996年 8月 IE3にJavaScript1.0互換のJScript1.0を搭載
1996年10月 NN3にJavaScript1.1が搭載され、リリース
1997年 7月 Netscape社がJavaScript標準化案をECMAに提出(MSも同意)
この Standard ECMA-262 June 1997 では、11.6.1 で以下のように
定義されており、
| 11.6.1 The addition operator ( + )
| The addition operator either performs string concatenation
| or numeric addition.
| The production AdditiveExpression : AdditiveExpression +
| MultiplicativeExpression is evaluated as follows:
| 1. Evaluate AdditiveExpression.
| 2. Call GetValue(Result(1)).
| 3. Evaluate MultiplicativeExpression.
| 4. Call GetValue(Result(3)).
| 5. Call ToPrimitive(Result(2)).
| 6. Call ToPrimitive(Result(4)).
| 7. If Type(Result(5)) is String or Type(Result(6)) is String,
| go to step 12. (Note that this step differs from step 3
| in the algorithm for comparison for the relational operators
| in using or instead of and.)
| 8. Call ToNumber(Result(5)).
| 9. Call ToNumber(Result(6)).
| 10. Apply the addition operation to Result(8) and Result(9).
| See the discussion below (11.6.3).
| 11. Return Result(10).
| 12. Call ToString(Result(5)).
| 13. Call ToString(Result(6)).
| 14. Concatenate Result(12) followed by Result(13).
| 15. Return Result(14).
| Note that no hint is provided in the calls to ToPrimitive in
| steps 5 and 6. All native ECMAScript objects except Date objects
| handle the absence of a hint as if the hint Number were given;
| Date objects handle the absence of a hint as if the hint String
| were given. Host objects may handle the absence of a hint in
| some other manner.
7 の説明にあるように、どちらかが文字列のとき、step 12 に行って、
文字列に変換して連結することとなっています。
たしか IE4 は JavaScript1.2 相当だったと思いますが、
<script language="JavaScript1.1"> とかして、バージョンを
明示しれやれば、JavaScript1.1 相当で動作します。
--
杉田
sugi-nws@bk.iij4u.or.jp
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735