通过typeof函数获取一个变量的类型
输出值释义boolean变量是布尔类型的number变量是数值类型的(整数、浮点数)string变量是字符串类型的(采用 " "、’ ’ )object变量是引用或Null类型的( new Array() / new String() )function函数类型的undefined变量是undefined类型的&& 【字符串中的引号】字符串中单双引号都无法解析变量,但都可以解析转义字符,它们可以相互嵌套使用 && 【常见转义字符】\n(换行,即换到下一行)、\r(回车,即回到当前行的开头)、\t(缩进)、\(一个\)、’(一个单引号)、"(一个双引号) && 【关于回车按键】根据操作系统不同,得到完全不同的字符。windows——\n\r,linux——\n,macos——\r或\n(10.9版本以后) && 【关于NaN】自己不要定义NaN,运算错误时会产生NaN,如 var num=3*‘小明’; 此时,num的值为NaN,类型为number。NaN的特点是,它不等于任何数值,包括NaN自己,任何与NaN运算的结果都是NaN,唯一检测NaN的办法是使用isNaN(); && 【关于undefined和null】他们的值相等,undefined其类型是未知的,而null是确定的对象类型
// 基本数据类型———————————————————————————— // 布尔类型 var a=true; //注意:布尔值小写 // alert(typeof(a)); // 将结果打印到控制台 console.log(typeof(a)); console.log(8>30); // 数值类型 包含整数、小数、二进制数、八进制数、十六进制数、NaN、科学计数法 var num=3; var num=3.6; var num=0b11; //二进制0b开头 var num=013; //八进制0开头 var num=0xf; //十六进制0x开头 var num=314e-2; //科学计数法,属于浮点型的一种,表示314*10的-2次方 console.log(num,typeof(num)); //关于NaN var num=NaN; //NaN表示not a number //自己不要定义NaN,运算错误时会产生NaN,如 var num=3*'小明'; 此时,num的值为NaN,类型为number var num=3*'小明'; console.log(num,typeof(num)); //num的值为NaN,类型为number console.log(NaN==NaN); //结果为false,NaN不等于任何数值,包括NaN自己 console.log(NaN-1); //结果为NaN,任何与NaN运算的结果都是NaN //字符串类型:双引号或单引号引起的字符 var str='123'; var str="hello"; var str='I love "MM"'; //单双引号可以相互嵌套使用 console.log(str,typeof(str)); //对象类型:对象、数组、null var obj =new Object(); //创建一个对象 var obj={name:'Zhang',age:18}; //对象 var list=[1,2,3,4]; //数组 var obj=null; console.log(obj,typeof(obj)); console.log(list,typeof(list)); console.log(typeof(null)); console.log(null); //undefined与null: console.log(null==undefined); //结果为true console.log(null===undefined); //结果为false //函数类型 //匿名函数/表达式函数 var Func=function(){ console.log('函数类型'); } console.log(Func,typeof(Func)); //使用语法定义函数 function sortnum(){ console.log('这是一个排序函数'); } console.log(sortnum,typeof(sortnum)); //undefined 未定义:当定义一个变量不给值时,它的类型就是undefined var un=undefined; console.log(un,typeof(un));数据类型转换分为显式数据类型转换(强制)和隐式数据类型转换(自动)。隐式数据类型转换在程序执行过程中根据需要发生转换,不经过人工干预,多发生在运算或者判断过程中,自动向着更加精确的方向转换。显式数据类型转换则根据程序员的意愿进行数据类型转换,需要进行操作。
【三种强制转换】
关键字释义Number();强转为数值(整数或浮点数)Boolean();强转为布尔型string();强转为字符串(任意值均可转换为字符串)使用 Number(); 、parseInt(); 和 parseFloat(); 做类型转换
关键字释义Number();强转为一个数值(包括整数和浮点数)parseInt();强转为整数parseFloat();强转为浮点数【注意】当字符串中包含非数值表示的字符时,Number();转换结果为NaN,而parseInt(); 和 parseFloat(); 返回从第一个字符开始的数值字符直至碰到非数值字符,若第一个字符是非数值字符则也返回NaN。 【注意】对象类型、函数类型、 undefined和 NaN转换结果均为NaN,布尔类型的parseInt(); 和 parseFloat();转换结果为NaN,但Number();转换结果为0或1。 【特别地】对象类型值为 null 时,Number();转换结果为0
//数据类型转换—————————————————————————————————————————————————————————— var str2='123'; // var str2='123abc'; //NaN-123-123 // var str2='1a2b'; //NaN-1-1 // var str2='a12bc'; //NaN-NaN-NaN // var str2='1.23abc'; //NaN-1-1.23 var res=Number(str2); console.log(res,typeof(res)); var res2=parseInt(str2); console.log(res2,typeof(res2)); var res3=parseFloat(str2); console.log(res3,typeof(res3));是数值返回false,非数值返回true
// 检测数据是否为非数值 var test='1'; console.log(test,isNaN(test));其他类型转换为字符串时,内容不变,类型变为字符串。(对象类型输出其字符串内容)
自增运算中:变量++表示先使用变量再加一,++变量表示先加一再使用变量。自减运算类似。
// 算术运算 var no1=11; var no2=8; var result1=no1+no2; //加法 console.log(result1); var result2=no1-no2; //减法 console.log(result2); var result3=no1*no2; //乘法 console.log(result3); var result4=no1/no2; //除法 console.log(result4); var result5=no1%no2; //取余 console.log(result5); // 自增:变量++表示先使用变量再加一,++变量表示先加一再使用变量 var no3=4; console.log(no3); //4 console.log(no3++); //4 console.log(no3); //5 var no4=7; console.log(no4); //7 console.log(++no4); //8 console.log(no4); //8当两边的值都是数值型时,字符串连接做算术运算。当两边有一个值为字符串时做字符串连接(数值型会做自动类型转换)
// 字符串连接 console.log(3+2); // 5 console.log('he'+'llo'); //hello console.log('he'+56); //he56 var str4='1'+1+2; // 112 var str4=1+1+'2'; // 22 console.log(str4);【js中没有逻辑异或运算(xor) 】 了解异或运算原理:相同为假,不同为真
1 xor 1 --> 0 1 xor 0 --> 1 0 xor 1 --> 1 0 xor 0 --> 0https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Operator_Precedence