编程的形式
面向过程:一种机械想法,如for循环...
面向对象:js半面向过程倾向于面向对象/java...
//1. typeof操作符:区分数据的类型 (number boolean string object undefined function)
例子
// var num = true;
// console.log(typeof(num));
// var num = [1,2];
// console.log(typeof(num));
// var num = null;
// console.log(typeof(num));
// var num = function(){};
// console.log(typeof(num));
// typeof还可以加空格当有括号使用
例子
// var num = undefined;
// console.log(typeof num);
2.类型转换js独有
(1)显式类型转换 (Number(转化为数字类型) / parseInt把里面的元素转化为整数 /parseFloat /Boolean / /)
// number转化为数字的结果
例一number:NaN
// var demo = undefined;
// var num = Number(demo);
// console.log(typeof(num)+":" + num);
例二 number:NaN
// var demo = "a";
// var num = Number(demo);
// console.log(typeof(num)+":" + num);
例三 number:NaN
// var demo = "true";
// var num = Number(demo);
// console.log(typeof(num)+":" + num);
例四 number:1
// var demo = true;
// var num = Number(demo);
// console.log(typeof(num)+":" + num);
例五 number:NaN
// var demo = "NaN";
// var num = Number(demo);
// console.log(typeof(num)+":" + num);
// parseInt转化为整数,不关注非数字如true,undefined--->NaN 属性:number
例一number:NaN
// var demo = true;
// var num = parseInt(demo);
// console.log(typeof(num)+":"+num);
例二number:2833
// var demo = "b11";
// var num = parseInt(demo,16);
转化为整数 16是“a”以16进制为基础转化为十进制;范围写radix2-36
// console.log(typeof(num)+":" +num);
例三100
// var demo = "100px";
// var num = parseInt(demo);
// console.log(typeof(num)+":"+num);
// parseFloat转化成正常小数,属性number
// var demo = "100.2.3abc";
// var num = parseFloat(demo);
// console.log(typeof(num)+":"+num);
// string转化为字符串 属性string
// to string
例一string:12
// var demo = 12;
// var num = demo.toString();
// console.log(typeof(num)+":"+num);
例二 undefined和null不能用toString
// var demo = null;
// var num = demo.toString();
// console.log(typeof(num)+":"+num);
例三 转化为8进制==string:12
// var demo = 10;
// var num = demo.toString(8);
// console.log(typeof(num)+":"+num);
例四 把一个二进制数转化为16进制
// var num = 1000;
// var test = parseInt(num,2);
// 二进制转化为十进制
// console.log(test.toString(16));
// 十进制转化为16进制
2 隐式类型转换 内部隐式调用的是显式的方法
隐式类型转换
// 例子 0
// var num = 1 -"1";
// console.log(typeof(num) +":" + num);
//属性 //值
例一 isNaN是非数,判断真假 -----> 对应Number
// console.log(isNaN("abc"));
// // 隐式转换的过程--把里面的数放在Number("abc") 里面,转化出来与NaN进行比对 是NaN <--> NaN就是true
// console.log(isNaN(null)); false
console.log(isNaN(undefined)); true
// null在Number里面是0 ,而undefined还是NaN
// var num = null;
// var demo = Number(num);
// console.log(typeof(demo)+":"+demo);
以下隐式调用类型属性变为number
++
// var a = "123";
// a++;
// 先把"123"转化为数值,隐式调用显式Number("123"),再计算; =124
// var a = "abs"
// a ++;
// "abs"非数,结果就是NaN,通过隐式转换成typeof(a):number
-- +- 一元正负
// var a = +"abc";
// console.log(typeof(a)+":"+a);
隐式转化为number:NaN
加号+例子
// var a = a + 1;
// console.log( typeof(a)+ ":" +a);
结果:number:NaN
不一样的地方**------加号+两侧有一个是字符串的话,两个最后都会变成字符串string**
// var a = "a" + 1;
// console.log( typeof(a)+ ":" +a);
结果:string:a1
乘号例子
// var a = "1" * 1;
// console.log(typeof(a)+":"+a);
结果:number:1
比较的例子 字符串和数字比会转化为数字进行比较.
// var a = "3">2;
// console.log(typeof(a)+":"+a);
结果:boolean:true;
但字符串和字符串比没有类型转换,ASC码比较
// var a = "3">"2";
// console.log(typeof(a)+":"+a);
等于==和不等!=的例子
// var a = 1 == "1";
// console.log(typeof(a)+":"+a);
// var a = 1 != true;
// console.log(typeof(a)+":"+a);
**===和!==**不发生类型转换,左右必须相等 //特殊情况 NaN === NaN---> false
变量没定义会报错
// console.log(a);
// 特殊情况:未定义的变量放在typeof里面不报错,会打印值出来,返回undefined
// console.log(typeof(a));
特殊情况 返回字符串类型的undefined...typeof(typeof(a))="string"---typeof(a)="undefined"
// console.log(typeof(typeof(a)));
// console.log(typeof(typeof(a)+":"+(typeof(a))));
测试题
// alert(typeof(a));
// alert(typeof(undefined));
// 弹出来的undefined,在控制台里面typeof(a)返回字符串类型的undefined
// alert(typeof(NaN));
// 返回字符串类型的number
// alert(typeof(null));
// 返回字符串类型的object
// var a = "123abc";
// alert(typeof(+a));
// 返回字符串类型的number
// alert(typeof(!!a));
// 返回字符串类型的boolean
// alert(typeof(a+""));
// 显示string
// alert(1=="1");
// alert(NaN == NaN);
// alert(NaN == undefined);
// alert("11"+11);
// 都变成字符串1111
// alert(1 === "1");
// alert(parseInt("123abc"));
// var num = 123123.345789;
// alert(num.toFixed(3));
保留3位小数
// typeof(typeof(a));
// typeof(a)返回 "undefined", typeof(typeof(a))返回 "string";