![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
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ランキング
-
ローカルのレジストリを読みたい
-
エクセル2010のvbaについて
-
javaScriptでグローバル変数に...
-
Webページ中の javascript をVB...
-
jquery か javascript で json ...
-
Shell.ApplicationでのIEオブ...
-
画面をダブリクリックしたカー...
-
イベントリスナーで読み込んだ...
-
【javascript】プロパティ?オ...
-
イベントリスナに登録される fu...
-
一定時間経つと画像を消す方法
-
JavaScriptの正規表現について
-
JSPの処理の途中で、JavaScript...
-
VB.NET2003 テキストボックスに...
-
ASP(VBS) ←→ JavaScript の変数...
-
ページを一回だけリロードさせ...
-
gas 全角数字を半角数字に変換
-
javascript:void(0)とは何でし...
-
if(1){...}とはどういうことで...
-
jsファイルを閲覧者がダウンロ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ローカルのレジストリを読みたい
-
Webページ中の javascript をVB...
-
エクセル2010のvbaについて
-
画面間でのJavaScrip...
-
クラス デフォルトプロパティの...
-
evtとは
-
javaScriptでグローバル変数に...
-
PHPで定義した変数を引数として...
-
jquery か javascript で json ...
-
文字を移動させその位置を表示...
-
JavascriptのDOMについて
-
【javascript】プロパティ?オ...
-
for each for in
-
フォルダ内のファイル名を取得...
-
CSSのクラスを動的に変更 classで
-
イベントリスナに登録される fu...
-
jQueryで、listの要素数を取得...
-
javascript 親オブジェクトと子...
-
VBSを学ぶ前に、、、
-
Ajaxのプログラムをオブジェク...
おすすめ情報
'use strict';
aaa = "taro";
document.write(aaa);
はエラーになるのに
'use strict';
name = "taro";
document.write(name);
はエラーになりません。