一、Js是有数据类型的 为弱类型!
弱类型:JS不需要我们去定义变量的类型,它会自己去判断我们定义的变量的类型!
二、Js的数据类型:七种(ES5) symbol不可变更类型(ES6)
number数字类型(NAN)、string字符串类型、boolean布尔类型、Object对象类型([]、{}、null、undefined)===>属性typeof判断数据类型
//数字类型
var i=100; alert(typeof i);
//字符串类型
var s=" movie "; alert(typeof s); alert(s.length); //7 空格也算一个字符 alert(s.charAt(3)); //v是第四个 但是charAt属性的的起始值为0;
//布尔类型
var j=true; alert(typeof j); //boolean:true或者false // if(boolean){} // for(;boolean;){}
//函数
var fn=function (){alert(1);}; function fn1(){ alert(1); } // alert(typeof fn);
alert(typeof fn1); //fn1是该函数的函数名 若此处改为fn1():浏览器执行两次,先执行函数内的语句fn1(),再执行typeof判断为undefined。
//对象Object
var obj=document.getElementsByTagName(‘div‘); alert(typeof obj); //object:东西、物品 不同于现实生活中的杯子、桌、椅等可以摸得着、看的见的物品,其本身是虚拟的但客观存在于虚拟网络中,所以又称之为对象 window、document、document.getElementById(‘id‘); //obj不为空 //添加属性 obj.abc=123; obj.onOff=true; //添加方法 obj.fn1=function(){alert(1);}; alert(obj.onOff); obj.fn1(); //调用函数
//数组[]
var arr=[1,2,3,4]; alert(arr.length); arr[2]=345; //改变数组内的内容 alert(arr); arr.push(5,6,7); //向数组内添加东西 alert(arr); alert(typeof arr); //object对象
arr.abc=889;
arr.fn1=function(){alert(‘ok‘);};
//alert(arr.abc);
//arr.fn1();
//{}
var jons={name:‘miaov‘,age:5}; alert(jons.name); //等同于将属性name:‘miaov‘和age赋予jons变量 alert(typeof jons); //object
//null
var n=null; alert(typeof n); //object
//undefined
var n; alert(typeof n); //undefined 未定义 //表示你的代码出现错误~~
三、JS数据类型转换(包含隐形转换)
1、显示 类型转换
1. number();
var a=‘100‘; // alert(a+100); //‘100100‘ // alert(Number(a)+100); //Number将看上去像数字的字符串转换为数字(整数和小数) 对字符串转换能转换的部分 var a1=‘‘; // alert(Number(a1)); //空格和null皆转换为0 var a2=true; // alert(Number(a2)); //true-1;false-0 var a3=[]; // alert(Number(a3)); //数组内不能有多个内容 无内容转为0 其余内容同a var a4=null; // alert(Number(a4)); //0
number();无法转化的会弹出NaN: not a number 不是个数字的数据类型
var a5; // alert(Number(a5)); //NaN var jons={}; // alert(Number(jons)); //NaN 全部无法转换 var a3=function(){alert(1);}; // alert(Number(a3)); //NaN
2. ParseInt();和ParseFloat();
var a=‘ +299px12345‘; alert(parseInt(a));
//转换整型 1、识别加减号 2、从左往右一个一个转换 3、空格跳过 4、遇到其余符号或字母停止 var b=‘ +12.3.9元12345‘; alert(parseFloat(b));
// var c=‘1123.134‘; if(parseInt(c) == parseFloat(c)){ alert(c+‘是一个整数‘); }else{ alert(c+‘是一个小数‘); }
①ParseInt():转换整型
1. 识别加减号
2. 从左往右一个一个转换
3. 空格跳过
4. 遇到其余符号或字母停止
②ParseFloat():转换浮点数
1. 识别加减号
2. 从左往右一个一个转换
3. 空格跳过
4. 遇到第一个点不停止
5. 遇到其余符号、字母或第二个点停止
1、隐式 类型转换:
1. + 200+‘1‘ 数字转换为字符串
2. -/*% 200-‘2‘ 字符串转换为数字
3. ++ -- ‘200‘ 字符串转换为数字
4. < > ‘299‘<4 字符串转换为数字 || ‘px299‘<‘p4‘ 将第一个数字或单词抽出来比较(utf-8的先后顺序 空格<数字<小写字母<大写字母)
5. !取反 一律改为布尔类型
6. == 判断值
7. (=== 判断类型再判断值 类型不同输出为false)不列入内
8. +‘200‘字符串转化为数字
四、isNaN应用实例
//NaN是不是数字类型
var a=Number(‘abc‘); alert(a); //NaN alert(typeof a); //a是数字类型
//同一个NaN彼此不相等
alert(a===a);
//NaN的布尔类型为假(false)
if(a){ alert(‘真‘); }else{ alert(‘假‘); }
isNaN: Is not a number 是不是 不是一个数字(不是数字)
isNaN(); //true false (判断某些值是不是数字)
可以这样记忆:isNaN这个属性不喜欢数字,遇到数字就会输出 false
1. 字符串会先由Number()判断 如果是数字输出为false 反之输出为true
2. alert(alert(isNaN(‘250.34‘))); //false
3. alert(isNaN(‘250px‘)); //ture
window.onload=function(){ var aInput=document.getElementsByTagName(‘input‘); var str=""; aInput[1].onclick=function(){ str=aInput[0].value; //alert(typeof str); //从文档中提取的内容皆默认为string if(isNaN(str)){ alert(str+‘不是数字‘); }else{ alert(str+‘是数字‘); } }; };
上面的这个例子如果不是很懂,可以忽略 不影响 到后面了解更为全面之后 会发现很简单!!!