//javascript基础语法备忘录-变量和数据类型
// 定义变量使用var关键字 后面跟变量名,不要使用eval 和arguments为变量名
var message = "hi";
message =100; //有效但是不推荐
//如果声明变量时未初始化,message保存一个特殊值undefined
var message;
// 在函数中定义变量一定要使用var ,否则此变量将成为全局变量
function test() {
var a = 1; //勿要忘记var
}
//ECMAscript有5中基本数据类型,Undefined,Null,Boolean,Number,String
//一个值使用typeof操作符 将返回一下字符串,注意typeof不是函数 而是一个操作符
"undefined" //如果这个值未定义
"boolean" //如果是布尔值
"string" //如果是字符串
"number"//如果是数值
"object" //如果是对象或者null
"function" //如果是函数
//以下三种方式都可以
alert(typeof message); //"string"
alert(typeof (message));//"string"
alert(typeof 95); //number
//Undefined类型只有一个值,就是undefined,在使用var声明但没有初始化的话,这个变量值就是undefined,
var m1 ;
alert(m1 == undefined); //true
//下面与上面等价
var m2 = undefined; //没有必要初始化undefined,未经初始化的值默认就是undefined
alert(m2 == undefined); //true
//注意包含undefined的值和尚未定义的值是不一样的
//下面没有声明 var age
alert(message);//“undefined”
alert(age); //产生错误
//上面的代码第一个 显示message的值 undefined
//第二行显示一个错误 因为age没有定义
//对未声明的变量只能使用typeof检测数据类型 ,但是会返回undefined,为未初始化的也会返回undefined,所以对显示的初始化。例如字符串初始化为"",数值初始化为0, 当使用typeof时,如果返回的是undefined,那么这个变量就没被声明
//对未声明的变量使用delete不会产生错误,
//Null类型是第二只只有一个值的类型, typeof检测到null时返回object,如果定义的变量用来保存对象,应该初始化为null 这样一来只要检查到对象是否被保存
//只要在保存的变量没有真正保存对象,就应该初始化为null ,这样体现了null作为空对象指针的管理。也用来区别undefined
alert(null == undefined);//ture
var cat = null;
alert(typeof cat); //object
//Boolean类型有两个值,ture和false ,true不一定等于1,false不一定等于0 ,true和false是区分大小写的,True和False不是Boolean的值
//将一个值转换为Boolean 可以使用Boolean();
var t1 = "hello";
var bm = Boolean(t1);
//以下会返回true,
/*
true,非空字符串,非零数字值,任何对象
*/
//以下返回false
/*
false,"",0和NaN,null,undefined
*/
//在流程判断时错误的使用对象而不是布尔值会产生错误
//在进行算术运算的时候 八进制和十六进制都会被转换成十进制,正零和负零被认为相等
//浮点数小数点后必须有一位数字,如果小数点后面没有数字就会作为整数保存,浮点数本身是一个整数,也会被转换成整数
var f1 = .1;//有效但不推荐
var f2 =1.; //解析为1
var f3 =10.0 ;//解析为10.0
//数值范围从 Number.MIN_VALUE~Number.MAX.VALUE 也就是5e-324~1.7976931348623157e+308
//如果超过这个范围,负数转换成-Infinity 正数Infinity
//如果某数得到了INfinity将无法参与下次计算
//可以使用isFinite()函数检测是否在范围内 不是返回false
var result = Number.MAX_VALUE+Number.MIN_VALUE;
alert(isFinite(result)); //false
//NaN(Not a Number) 用于表示返回一个数值操作,但是没有返回的情况,任何NaN参与的运算结构都是NaN,它与任何值都不相等,包括自己
alert(NaN==NaN) //flase
//isNaN()接收一个参数 任何不能转换为数值的值都会使整个函数返回true
//数值,布尔值,对象,字符串都有toString()方法,但null和undefined没有 , 通过传参数可以使toString()转换为输出数值的字符串形式
var num = 10;
alert(num.toString(2)); //"10"
alert(num.toString(8)); //"1010"
alert(num.toString(10)); //"10"
//如果不知道转换值是不是null或者undefined时 使用String();
alert(String(null)); //"null"
alert(String(age)); //"undefined" age没有声明
//Object类型
var o = new Object();
var o2 = new Object; //推荐
//每个对象都有以下方法和属性
//constructor 用于保存创见当前对象的构造函数 上面例子就是Object();
//hasOwnProperty(propertyName),检查给定的属性是否存在当前对象中 属性名必须是字符串形式
o.hasOwnProperty("name");
//isPrototypeOf()检查传入的对象是否是对象的原型