目录
一、JS变量
(一)JS变量的分类
(1)全局变量:
在函数体之外声明的变量属于全局变量
(2)局部变量:
在函数体之内声明变量,包括一个函数的形参都属于局部变量。
(3)全局变量和局部变量的区别:
两个生命周期不一样,全局变量的生命周期是:浏览器打开时声明,浏览器关闭时销毁,尽量少用。因为全局变量会一直在浏览器的内存当中,耗费内存空间,能使用局部变量尽量使用局部变量。局部变量:函数开始执行时局部变量的内存空间开辟,函数执行结束之后,局部变量内存空间释放,局部变量生命周期较短。
(4)注意:
当一个变量声明的时候没有使用var关键字,那么不管这个变量是在哪里声明的,都是全局变量。
二、JAVA变量
(一)Java变量的分类
(1)实例变量是属于对象,类变量是属于类。
也就是说实例变量是一个类创建完对象之后才能用的,也就是在Student s = new Student(); 这个语句之后才能使用。比方说:学生类中有个sname属性,如果想要使用sname都必须在Student s = new Student()语句之后才能使用; s.sname;因此说实例变量是属于对象的。
(2).类变量是属于类这个说法是因为类变量是static来修饰,static修饰的变量有个特点就是可以在实例对象创建之前能使用。
(3)如果按照声明位置划分的变量类型中,局部变量声明后必须要赋值才能使用,而成员变量声明后可以不赋值,系统有默认值。如果按所属的数据类型划分,基本类型数据只占用内存中的一块内存;而引用占用的是两块内存,根据引用变量就可以在堆内存中找到它所指向的对象。
三、JS中的变量和JAVA中的变量的区别
(一)Java是一种强类型语言,JS属于弱类型语言。
(1)Java是一种强类型语言,强类型怎么理解?
java语言存在编译阶段,假设有代码; int I ;
那么在Java中有一个特点是:Java程序编译阶段就已经确定了i变量的数据类型,
该i变量的数据类型在编译阶段是int类型,那么这个变量到最终内存释放,一直都是Int类型,
不可能变成其他类型。
Int i =10;
Double d = I;
这行代码是声明一个新的变量d,double类型,把i变量中保存的值传给d
i还是int类型
i="abc";这行代码编译的时候会报错,因为i变量的数据类型是Int类型,不能将字符串赋值给I
Java中要求变量声明的时候是什么类型,以后永远都是这货在那个类型,不可变。
Byte short int long float double boolean char
1 2 4 8 4 8 1 2(字节)
(2)JS怎么声明变量?
Var 变量名;
怎么给变量赋值?
变量名=值;
JS是一种弱类型语言,没有编译阶段,一个变量可以随意赋值,赋什么类型的值都行。
Var I =100;
I = false;
I ="abc"
I = new Object();
I = 3.14;
a,b都是undifiend c为200
总之,给我最大的感受是,在JAVA中变量的类型是由等号左边的数据类型决定的,而JS中的变量是由等号右边赋的值决定的,相比之下JS更加的灵活。这是我个人的理解,如果有不对的地方,还请各位大佬指出,谢谢。