分配一个值而不先声明它?

问题描述 投票:0回答:3

[谁能解释为什么我们可以不先声明就可以赋值吗?据我了解,我们需要先声明一个变量(var VisitorName =提示符(“输入您的名字:”)。如果不是变量,什么是visitorName?非常感谢!

 visitor_name = prompt("Input your name : ");
 if(visitor_name !=null && visitor_name != ""){
   alert("Your name is: " + visitor_name);
 } else {
   alert("No Name User")
 }
javascript variables alert prompt
3个回答
1
投票

创建javascript时,它应用于小型脚本,并且通常由新手程序员使用。结果,它被设计为容忍一些草率的编码实践。它执行此操作的方法之一是,如果您未能声明变量,它将为您创建一个全局变量。

此行运行时:

 visitor_name = prompt("Input your name : ");

Javascript将在名为windowvisitor_name对象上创建一个属性。之后,无论何时您引用visitor_name,由于没有其他具有该名称的变量,它将访问window.visitor_name

我建议您避免使用JavaScript的此“功能”,而只需显式声明变量。


0
投票

这是因为JavaScript引擎内部将第一行代码解释为:

var visitor_name;
visitor_name = prompt("Input your name : ");

0
投票

Javascript变量是松散类型的,这意味着您可以将任何类型的值分配给变量。

不带var关键字声明的变量的范围将成为全局变量,而与声明的位置无关。可以从网页的任何位置访问全局变量

x = 1;
console.log(x);
x = "one";
console.log(x);

但是不建议您声明没有数据类型的变量,因为它会干扰其他变量的范围,并且可能会更改某些全局变量的值。

© www.soinside.com 2019 - 2024. All rights reserved.