关键字var的用法
var操作符定义的变量将成为定义该变量的作用域中的局部变量。也就是说,如果在函数中使用var定义一个变量,退出函数将会自动销毁。
function test(){
var message="hi";
}
test();
alert(message);
上面的这段代码将会在浏览器中报错,未定义!
function test(){
message="hi";
}
test();
alert(message);
这段代码将会正常,因为此时的message已经是全局变量。
基本数据类型
基本数据内容是直接保存在栈内存里面的,,变量也是保存在栈内存中的。还有基本类型的数据不是对象。
var a=1;var b=a;a++; alert(b);
结果时1.
Bolean类型
该类型有两个字面量:true和falese。
var message="hello";
var boolean=Boolean(message);
alert(boolean);
上面这段代码牵扯到类型转换,将字符串转换为布尔值true.关于转换,总结了以下规律。
数据类型 | 转换为true的值 | 转换为false的值 |
---|---|---|
Boolean | true | false |
string | 任何非空字符串 | “”空字符串 |
Number | 任何非零数值 | 0和NaN |
object | 任何对象 | null |
undefined | n/a | undefined |
var message="hello";
if(message){
alert("true");
}
上面这段代码牵扯到自动转换为布尔值。
Number类型
Number中infinity为无穷大,typeof()测试出来仍然是number类型。
NaN表示不是一个数字,测试出来仍然是一个数字类型。
强制类型转换
方式1
调用Number()函数,总结了转换规则如下
1 如果是boolean值,true转换为1,false转换为0.
2 如果是数字值,只是简单的传入传出。
3 undefined返回NaN.
4 如果是字符串,只包含数字,则将其转换。
其他进制的转换为10进制,
如果是空的,则转换为0,
如果是其他格式,转换为nan;
方式2
调用parseInt()函数或者parseInt(),这种方式专门解决字符串中的数字。从左向右依此寻找不为数字的其他类型的数据,不过这种方式有种和上面不一样,就是先将参数转换为字符串,在将其按照这种方式进行转换。比如:
var a=true;
a=parseFloat(a);
console.log(a);
上面的结果是nan,因为先将其转换为字符串,最后结果就是nan。
Null类型
该类型的值只有一个,就是null,表示一个空对象,使用typeof()测试出结果仍然是object。
Undefined类型
该类型的值只有一个,undefined。未定义,比如定义一个变量,但未给其赋值,返回值是undefined。
string类型
直接进入强制转换部分。
第一种,调用tostring()方法,
var a=123;
a= a.toString();
console.log(typeof(a));
在此需要注意的是转换后对原来的数据没有影响,我们在这里覆盖了原来啊的值。该方法对Null和undefined并不适用。
第二种是使用string()函数 ,将转换的数据作为参数传递给函数。
var a=undefined;
a=String(a);
console.log(typeof(a));
注意上面大写首字母,将null直接转换为“null”。
引用数据类型
object类型
保存在堆内存中。而变量保存的是堆内存中的地址,所以当另一个变量与该变量相等时,两个地址相等,则指向的值也一样了。
var per1=new Object();
per1.name="renjialei";
per1.name="gaochi";
var per2= new Object();
per2.name=per1.name;
console.log(per2.name);
该输出结果是gaochi,因为一直指向地址。