1>:可以为变量声明任何类型,且同一变量被声明多次也是合法的。
i = 10;
i = "ten";
上面的声明方式在JavaScript中是全局变量(JavaScript会默认的给出声明),通常非常不习惯于这中方式,也不推荐使用这种方式,而推荐使用以下这中方式:
var i = 10;
var i = "ten";
注意:
1:这种方式是永久性(持久性)声明,当试图使用delete操作符删除时是错误的。
i = 10;
i = "ten";
上面的声明方式在JavaScript中是全局变量(JavaScript会默认的给出声明),通常非常不习惯于这中方式,也不推荐使用这种方式,而推荐使用以下这中方式:
var i = 10;
var i = "ten";
注意:
1:这种方式是永久性(持久性)声明,当试图使用delete操作符删除时是错误的。
2:当声明局部变量时必须使用这种方式。
3:在强类型语言像C、C++、java......这样声明是不合法的,但是局部变量和全局变量同名局部变量的有先级将高于成员变量,局部变量将覆盖成员变量,这点通用样也适合于JavaScript。
如下:在全局和局部中都有声明变量scope,局部变量将全局的清掉而前一个alert()取的值将是局部变量的值而此时还没有声明局部变量,所以会有下面的结果
var scope = "global";
function f( ) {
alert(scope); // 显示的结果是"undefined",而不是"global"
var scope = "local"; // 变量在此声明,但是在全局变量有定义它
alert(scope); // 这里输出 "local"
}
f();
var scope = "global";
function f( ) {
alert(scope); // 显示的结果是"undefined",而不是"global"
var scope = "local"; // 变量在此声明,但是在全局变量有定义它
alert(scope); // 这里输出 "local"
}
f();
2>:变量的有效范围
1:从声明方式来看
name="A!SEN" 将是一个全局变量,它放的位置将不影响它的有效范围
var name="A!SEN" 它的有效范围将受限有它所处的位置,变量所处的位置有两种函数体内或者函数体外,如果是在函数体内它的有效范围将是整个函数体
例如:
var scope = "global scope"; //全局变量
function checkscope( ) {
var scope = "local scope"; //局部变量
function nested( ) {
var scope = "nested scope"; //有效范围为这个函数体
name="dengsenhua"; //全局变量
document.write(scope); //输出 "nested scope"
}
nested( );
document.write(name); //输出 "dengsenhua"
}
checkscope( );
1:从声明方式来看
name="A!SEN" 将是一个全局变量,它放的位置将不影响它的有效范围
var name="A!SEN" 它的有效范围将受限有它所处的位置,变量所处的位置有两种函数体内或者函数体外,如果是在函数体内它的有效范围将是整个函数体
例如:
var scope = "global scope"; //全局变量
function checkscope( ) {
var scope = "local scope"; //局部变量
function nested( ) {
var scope = "nested scope"; //有效范围为这个函数体
name="dengsenhua"; //全局变量
document.write(scope); //输出 "nested scope"
}
nested( );
document.write(name); //输出 "dengsenhua"
}
checkscope( );
2:JavaScript变量的有效方位没有块的概念(这点不同于强类型语言)
如:j的有效范围不是if块内,k的有效范围不是For块,变量: i、j、k:有效范围是一样的(有效范围将都是整个函数体)。
function test(value) {
var i = 0;
if (typeof value == "object") {
var j = 0;
for(var k=0; k < 10; k++) {
document.write(k);
}
document.write(k);
}
document.write(j);
}
如:j的有效范围不是if块内,k的有效范围不是For块,变量: i、j、k:有效范围是一样的(有效范围将都是整个函数体)。
function test(value) {
var i = 0;
if (typeof value == "object") {
var j = 0;
for(var k=0; k < 10; k++) {
document.write(k);
}
document.write(k);
}
document.write(j);
}
理解一句话:当声明一个全局变量时,实际上所做的是创建了一个全局变量的属性
3>:两种基本的数据大类型Primitive Types ,Reference Types很想强类型语言的值类型和引用类型.
1:Primitive:Numbers, boolean values, null and undefined。
Primitive:这种数据类型在内存的分配过程中有固定的长度
number:它是Primitive中最长的数据类型在内存中站8个字节
Boolean:在内存中只占一个位.
2:Reference:Objects, arrays, and functions。
Reference:它没有固定的长度,这就是JavaScript的数组可以改变长度的原因
Reference:它没有固定的长度,这就是JavaScript的数组可以改变长度的原因