No.2ベストアンサー
- 回答日時:
ANo1です。
nameの場合は変数というよりは、windowオブジェクトのプロパティ(r/w可)としてnameが既設定されていますので、これを上書きしているものと思います。
それなので、
name = "taro";
は、変数宣言とはみなされないと解釈した方がよさそうです。
https://developer.mozilla.org/ja/docs/Web/API/Wi …
一方で、グローバルに宣言した変数は、windowオブジェクトのプロパティのようになります。(正確なところは知りませんが、見掛け上はそうなります)
var hoge = "taro";
alert(window.hoge); // taro
似たようにr/w可能なwindowのプロパティを探してみるとstatusも同様ですね。
(書き込み禁止になっていると、エラーになるかも知れませんが…)
さらには、読み取り専用のプロパティに代入してみると…
length = "taro";
この場合は、ブラウザによっても対応が異なるようです。
IE:ReferenceError: assignment to undeclared variable
fx:無視(エラーにならない)
>でもnameという名前の変数はプログラマーが勝手に作っても良いのですよね…。
nameプロパティにオブジェクトや関数を代入するとエラーになるかと思い試してみましたが、一応、代入はできてしまうようです。
ただし、これを呼び出そうとするとTypeError等になったりするようですので、通常の変数と完全に同等というわけでもなさそうです。
var宣言した上で関数を代入した場合でも、実行できるブラウザとエラーになるブラウザがあるようです。
また、何らかの都合で、window.nameで識別するような必要が生じた場合は、思わぬことになる可能性がありますので、予約語的に扱っておいた方がよいのかもしれませんね。
とてもご丁寧な回答誠にありがとうございます。
ネット・書籍等いろいろ探しましたがどこにも記述されていないので質問してみました。
>window.nameで識別するような必要が生じた場合は、思わぬことになる可能性がありますので、予約語的に…
なんとなくモヤモヤ感が残りますが、現状ではやはり上記のように考えておくのが良いのでしょう。
どうもありがとうございます〜!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- Perl perlをバージョンアップしたら、今まで正常に動いていたプログラムが、エラーになってしまった 3 2022/10/05 15:44
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- その他(プログラミング・Web制作) seleniumbasic chrome操作について 1 2023/03/29 15:40
- C言語・C++・C# visual studio 2019において、宣言していない変数があるのにエラーなくビルド出来ました 6 2023/03/08 16:32
- iPhone(アイフォーン) iPhone11です。 キャリアはドコモですが、spモードは利用可能ですがAppleMusicのキャ 1 2022/04/08 15:50
- C言語・C++・C# const char** p;のとき、free(p)でC4090エラーとなるのはなぜですか 3 2023/03/31 16:28
- MySQL エラー 1068 (42000): 複数の主キーが定義されていますエラー 2 2022/11/17 04:36
- WordPress(ワードプレス) ワードプレスのエラー ログイン画面が表示できない 1 2022/11/05 09:51
- Visual Basic(VBA) Vba 互換モードでのAppActiveについて教えてください 2 2022/06/27 18:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フォルダ内のファイル名を取得...
-
javaScriptでグローバル変数に...
-
Webページ中の javascript をVB...
-
event.srcElementの動的設定
-
JSPの処理の途中で、JavaScript...
-
Vba SelStart、SelLen教えてく...
-
デザイン時のVisible=Falseは実...
-
javascript:void(0)とは何でし...
-
ハイフンだけ置換したい。
-
JavaScriptで ブラウザの閉じる...
-
初心者です。gulpでコンパイル...
-
ASP(VBS) ←→ JavaScript の変数...
-
Visual Basic 6.0 のテキストボ...
-
PHP処理実行後のページの遷移に...
-
再帰呼び出しになってしまうの...
-
独自の検索エンジンを作るには!?
-
「終了していない文字列型の定...
-
VB.NET2003 テキストボックスに...
-
正整数の半角数字かどうか判定する
-
JSON形式でのページング処理に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ローカルのレジストリを読みたい
-
Webページ中の javascript をVB...
-
jquery か javascript で json ...
-
エクセル2010のvbaについて
-
javaScriptでグローバル変数に...
-
画面間でのJavaScrip...
-
文字を移動させその位置を表示...
-
オライリーのプログラミングPHP...
-
フォルダ内のファイル名を取得...
-
ASP.NETでURLにマッピングされ...
-
CSSのクラスを動的に変更 classで
-
イベントevt?evt.target:event....
-
一定時間経つと画像を消す方法
-
クラス デフォルトプロパティの...
-
strictモードでなぜエラーにな...
-
JSの「document.getElementById...
-
event.srcElementの動的設定
-
VBAの引数の指定 カッコとイコ...
-
Shell.ApplicationでのIEオブ...
-
「リンク」と「ハイパーリンク...
おすすめ情報
'use strict';
aaa = "taro";
document.write(aaa);
はエラーになるのに
'use strict';
name = "taro";
document.write(name);
はエラーになりません。