JS问题引发的变量问题(C,C#,C++,JAVA都看过来,帮帮我)

来源:百度知道 编辑:UC知道 时间:2024/05/17 12:18:59
var now=new Date();//创建一个表示当前日期和时间的对象

以前我学JAVA的时候,都是 像 string a=new string();这样的
学C# OOP的时候也是 假如说:student是个类 里面有字段属性,方法等

用的时候也就是实例化一下,student st=new student();然后通过赋值给它的属性赋值,为什么写成var now=new Date();啊 Date不是已经有的类吗?

为什么写成var now=new Date(); 而不是Date now=new Date();

还有就是解释一下NEW与不NEW有什么区别啊?

javascript的变量是没有类型的。
所以可以这样写:
var a = 5;
a = "string";
可以把变量理解为一个放值的容器,像C,C++的这种容器是专用的,只能放类型一致的值。而javascript的这种容器是通用的,什么类型的都可以放。
所以在javascript里面就不会是:
Date now = new Date();了。
因为now没有类型,var只是说这是一个变量罢了。

如果你看一下typeof(Date)会发现它是一个函数,看一下typeof(Date()),会发现是一个字符串。而typeof(new Date())是一个对象。和C++这些语言不同,javascript没有专门的构造函数,Date其实和普通函数没有区别。相应的,任何函数你给它一个new都没有问题。
在javascript里面,可以这样理解:new init()表示,创建一个对象,然后用init函数来初始化这个对象。

具体一点:
function init(){
this.num = 100;
return 100;
}
现在var a = init();那么a = 100,因为init()返回了100
而var a = new init();那么a是一个对象{num:100},因为在init里面的this就是new出来的这个对象。在javascript里面,任何对象都可以随时加上一个属性。this.num = 100就是给this加了一个名字为num,值为100的属性。

JS中声明变量或对象的时候,统一都是用var,声明的时候JS并不知道该变量或对象是什么数据类型,你赋值之后,JS会自己区分的,这个不用我们担心,只需要知道这就是JS的语法规则就行,和java,C#是一样的,各自语法规则不同而已

JS的语法规则,声明一个变量是用VAR做关键字,PHP这些脚本语言都是这样,因为这些脚本语言是弱类型的语言,所以不像JAVA、C、C++这些强类型语言一样需要根据不同的类型来声明变量。

VS2008中吗?
var 指通所有类