JS:变量,typeof,数据类型,数据类型转换,for-in语句,with语句
声明当前执行环境的变量:
var message;
var message = 'hi';
var message = 'hi',
found = false,
age = 29;
声明全局变量:
message = 'hi';
typeof:用来检测给定变量的数据类型
返回值:
- 'undefined':这个值未定义;
- 'boolean':这个值是布尔值;
- 'string':这个值是字符串;
- 'number':这个值是数值;
- 'object':这个值是对象或null;
- 'function':这个值是函数。
数据类型:Undefined, Null, Boolean, Number, String
转型函数:Boolean(),Number(), parseInt(), parseFloat(),toString(), String(), 值+"",
Undefined类型:
Undefined类型的值:只有undefined
只声明了变量,但未对变量初始化,这个变的类型就是Undefined,值就是undefined.
var message;
alert(message == undefined);//true
var message = undefined;
alert(message == undefined);//true
Null类型:
Null类型的值:只有一个null
一个空对象指针的数据类型是Null,值是null
Boolean类型:
Boolean类型的值:只有两个值,true和false
ECMAScript中所有类型的值都有与这两个Boolean值对应的值,这些值可以使用转型函数Boolean()转换为相应的Boolean值
如:
var message = "Hello world!";
var messageAsBoolean = Boolean(message);
各个数据类型和Boolean值的对应规则
数据类型 | 转换为true的值 | 转换为false的值 |
Boolean | true | false |
String | 非空字符串 | ""(空字符串) |
Number | 非零数字值 | 0和NaN |
Object | 任何对象 |
null |
Undefined | 不适用 | undefined |
if语句自动执行相应Boolean转换,如:
var message = "Hello world!"
if(message){
alert("Value is true");
}
Number类型:
字面量格式
var intNum = 55;//整数
八进制字面量严格模式下无效
var octalNum1 = 070;//八进制56
var octalNum2 = 079;//无效的八进制数值,解析为79
var octalNum3 = 08;//无效的八进制数值,解析为8
var hexNum1 = 0xA;//十六进制10
var floatNum1 = 1.1;
var floatNum2 = 3.12e7
NaN:not a number.非数值
isNaN()参数可以转换成数值返回false,否则返回true
如:
isNaN(NaN);true
isNaN(10);false
isNaN('10');false 转换为10
isNaN("blue");true
isNaN(true);false 转换为1
将其它数据类型转换为数值类型:
Number()
Boolean:true->1,false->0
Number:返回原值
Null:null->0
Undefined:undefined->NaN
String:"Hello world"->NaN,""->0, "000011"->11
Object:先调用对象的valueOf()方法,然后依照前面的规则转换成返回值,如果转换出的返回值是NaN,则调用toString()方法,再依照前面的规则转换成返回值返回
将字符串按照数值模式转换为整数数值:
parseInt():从第一个有效字符开始解析,直到第一个无效字符为止
parseInt('70'):70
parseInt('22.5'):22
parseInt("1234blue"):1234
parseInt(""):NaN
parseInt("blue123"):NaN
将字符串按照数值模式转换为浮点数数值
parseFloat():从第一个有效字符开始解析,直到第一个无效字符为止(忽略前导零)
parseFloat('123blue'):1234(整数)
parseFloat('000022.5'):22.5
将一个值转换成字符串
1.值的toString()方法,返回值的字符串表现
var age = 11
var ageAsString = age.toString();//"11"
var found = true;
var foundAsString = found.toString();//"true"
值null和undefined没有这个方法
2.String()函数
如果值有toString()方法,则调用该方法
如果值是null,则返回“null”
如果值是undefined,则返回“undefined”
3.把这个值和""相加
Object类型(引用类型):Object类型的具体的值叫做“对象”,对象的本质是一组没有特定顺序的值。(无序属性的集合,其属性可以包含基本值,对象,或者函数。)
Object对象是所有其他ECMAScript对象的基础(只适用于ECMAScript中的对象,不是指宿主环境中的对象,如BOM、DOM中的对象)
创建Object类型:
var o = new Object();
Object类型的固有属性和方法:
Constructor
hasOwnProperty(propertyName)
isPrototypeOf(object):
propertyIsEnemerable(propertyName)
toLocaleString()
toString()
valueOf()
for-in语句:
for-in语句枚举对象的属性
for (var propName in window){
document.write(propName);
}
在使用for-in循环之前,先检测确认该对象的值是不是null或undefined,因为ECMAScript 3以及之前版本会抛出错误
with语句:(严格模式下不允许使用)
设置代码作用域
var qs = location.search.substring(1);
var hostName = location.hostname;
var url = location.href;
等同于:
with(location){
var qs = search.substring(1);
var hostName = hostname;
var url = href;
}//这里面定义的变量的作用域还是和with外面的一样