一、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皆转换为0var a2=true;// alert(Number(a2)); //true-1;false-0var a3=[];// alert(Number(a3)); //数组内不能有多个内容 无内容转为0 其余内容同avar a4=null;// alert(Number(a4)); //0
number();无法转化的会弹出NaN: not a number 不是个数字的数据类型
var a5;// alert(Number(a5)); ?//NaNvar 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); //NaNalert(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+‘是数字‘); ???????} ???};};
上面的这个例子如果不是很懂,可以忽略 不影响 到后面了解更为全面之后 会发现很简单!!!
JS数据类型
原文地址:https://www.cnblogs.com/wssjzw/p/wssjzwtypeof.html