不先声明就赋值?

Assigning a value without declaring it first?

谁能解释一下为什么我们可以在不先声明的情况下赋值。据我了解,我们需要先声明一个变量 (var visitorsName = prompt("Input your name: ")。如果不是变量,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 时,它被期望用于小脚本,并且通常由新手程序员使用。因此,它旨在容忍一些草率的编码做法。它执行此操作的方法之一是,如果您未能声明您的变量,它将为您创建一个全局变量。

当这条线运行时:

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

Javascript 将在名为 visitor_namewindow 对象上创建一个 属性。之后,任何时候您引用 visitor_name,因为没有其他变量具有该名称,它将访问 window.visitor_name

我建议您避免使用 javascript 的这个 "feature",并且只显式声明您的变量。

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

无论在何处声明,不使用 var 关键字声明的变量范围都将成为全局变量。可以从网页的任何位置访问全局变量

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

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