JavaScript数据类型和转换

xiaoxiao2021-02-28  98

js数据类型和转换 这是每门编程语言都要学的,每本书开头都是数据类型和变量什么的,是不是觉得我都会了,跳过。。 BUT,这次no,这是最基本最重要的地方,一定要认真看。 一、数据类型 分为两类:基本数据类型和引用数据类型。 基本数据类型:string(字符串),number(数字),boolean(布尔值),null(空),undefined(未定义) 引用数据类型:array,object 下面分别介绍: 1、string (1)由一对单引号或者双引号表示。并且单引号和双引号一定要成对出现。 个人推荐使用单引号好一点。 (1)var str1=‘a’; (2)那么var str2=‘’;呢?这对引号里面什么都没有,这也是一个字符串,叫做 空字符串。 (3)那么var str3=‘ ‘;呢?这对引号里是一个空格,这样是一个字符串。但 不是空字符串。 (2)、(3)的区别是什么呢?在控制台打印一下: var str1='a'; var str2=''; var str3=' '; console.log(str1); console.log(str2); console.log(str3); 结果如下: 我们会发现空格是可以选中的,空字符串是不能被选中的。(空格的大小:半个字符大小,比如对于谷歌浏览器一个字符是16px,那么空格就是8px。) (2)字符字面量(转义序列) 对于有强迫症的同学,希望整个字符串都用单引号表示,那如果遇到it’s me这种的字符串呢? var str=‘it’s me’;//报错 那可以写成var str=“it’s me”;//不会出错 但是强迫症怎么弄? var str='it\'s me’; 这就是转义字符。 (3)字符串的方法 toString()方法(null和undefined没有这个方法,number,string,boolean,对象都用这个方法) 一般toString()可以不传入参数,默认是按基数10传递,也可以传入参数作为基数。 var num=10; alert(num.toString());// ’10' alert(num.toString(2)); //‘1010’ alert(num.toString(8)); // ’12' alert(null.toString()); //报错 如果不知道要转换的值是不是null或undefined,还可以使用转型函数String(),这个函数能够将任何类型的值转换为字符串。转换原则如下: 如果值有toString()方法,则调用该方法并返回结果。 如果值是null,返回’null'; 如果值是undefined,则返回’undefined’; 例子: var value1=10; var value2=true; var value3=null; var value4; alert(String(value1)); //“10" alert(String(value2));// "true" alert(String(value3)); //“null" alert(String(value4));// “undefined” 要把某个值转换为字符串, 还可以使用加号,比如 1+"" //“1" 字符串是 灰色的。无数多个。 2、number(数字) (1)由0-9之间的任意数字组成,可以是整数也可以是小数,数字的范围在正无穷(+infinity)-负无穷(-infinity)之间 数字的最大值:Number.MAX_VALUE //1.7976931348623157e+308 数字的最小值:Number.MIN_VALUE  //5e-324 在程序中,如果看到全部大写的变量命名,那么一般是常量。 如果大于最大值,会出现Infinity。 数字是 蓝色的。无穷多个。 (2) NaN NaN==NaN //false NaN与任何值都不相等,包括NaN本身。 isNaN()可以检测任何值是不是NaN。 alert(isNaN(“blue”));//true,"blue”不能转换为数值。 alert(isNaN(true));//false alert(isNaN(“10”));//false isNaN()也可以用于检测对象。原则: 先调用对象的valueOf()方法,然后确定该方法返回的值是否可以转换为数值,如果不能,再调用toString()方法,再测试返回值。 3、boolean true false 4、undefined 使用var声明但没有初始化。 var a; alert(a); //undefined alert(b);// 报错 5、null 空对象 eg: var btn=document.getElementById(‘zhangsan’); //假设zhangsan不存在 alert(btn); //null undefined和null的区别:undefine表示变量有,但值无;null表示变量没有 var btn=document.getElementById(‘zhangsan’); //假设zhangsan不存在 alert(btn); //null 获取不存在的对象,就会返回null <input id=“lisi” type=“text”/> var btn=document.getElementById(‘lisi’); alert(btn); //[object HTMLinputCollection] alert(btn.value);//空字符串,啥也没有,有value这个属性,但没有值。 alert(btn.name);//空字符串,啥也没有,有name这个属性,但没有值。 alert(btn.sex);//undefined,默认没有sex这个属性,会返回undefined 6、引用类型 对象object 每个数据是由键值对组成的,数据可以是0个,也可以是多个,每个数据之间用逗号隔开,最后一个数据类型不能加逗号(加了在IE低版本下会报错) 键名:不满足变量命名规则的需要加双引号或者单引号(数字除外)。 采用对象字面量的定义: var obj={ name:'zhangsan’, age:18, 'background-color’:’red’, 1:3 }; var person={ name:"wang", age:30, height:’180cm’, weight:’100kg’, 'girl-friend': null }; 采用构造函数声明: var o=new Object(); Object的每个实例都具有下列属性和方法: constructor: hasOwnProperty(propertyName):用于检查给定的属性在当前对象实例中欧是否存在(而不是在实例的原型里) isPrototypeOf(object): propertyIsEnumerable(propertyName): toLocaleString(): toString(): valueOf(): 二、typeof 检测数据类型,返回这个类型对应的字符串 (全小写) 返回的结果与系统中定义的类型是有区别的,比如返回string,定义的是首字母大写的。 有什么用呢? 比如淘宝购买数量输入框中判断是否是数字。 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <input type="text" placeholder="请输入数字" id="text"/> <button id="btn">点我</button> <script> document.getElementById("btn").οnclick=function(){ var num=document.getElementById('text').value; console.log(num);//num是一个字符串数字,比如输入123,输出是带引号的“123” console.info(typeof num);//‘string’ if(typeof num=='number'){ alert('is a number'); }else{ alert('not a number'); } num=Number(num); console.log(num);//数字,但如果输入不是一个数,这是强行转,不好 console.info(typeof num);//‘number’ if(typeof num=='number'){ alert('is a number'); }else{ alert('not a number'); } } </script> </body> </html> 这里有一个表格,表示typeof返回的数据类型。 系统定义的数据类型 typeof返回的数据类型 String string Number number Boolean boolean Undefined undefined Null object Object                           object 三、数据类型转换 js支持任意值转化成Number,boolean,String 1、任意类型转数字 Number(要转换的值)   把任意类型转化成数字(NaN也是数字的一种) 要转换的类型   例子 转换后的值 Undefined undefined   NaN Null   null 0 Boolean true/false 1/0 String                '' 0   ' ' 0   '你好' NaN   ‘012’ 12   ‘12a’ NaN 总结: 空字符串,空格字符串转数字结果是0 字符串里的内容是否是纯数字,如果是个纯数字的话,就转成对应的数字; 如果不是纯数字,那结果就是NaN。 Number类型转数字还是原来的数字,没有意义 Object转数字类型,没有意义,结果不定     {} //NaN     {name:”wang”}//NaN     []//0     [3]//3     [’nihao’]//NaN 2、字符串转数字 parseInt() 把字符串转成整数型数字 parseFloat()把字符串转成浮点型(小数)数字 传进来的字符串必须是数字或者空格加数字开头,它会从数字开始,一位一位往后找,直到找到的字符串不是数字就会停止,会把找到的数字转化成真正的数字,如果没找到那就返回NaN。 当然也有例外,如果传入的是字母,再加上基数,也是可以的。 精度问题: 0.1+0.2==0.3 //false 3、isNaN() 真正的作用不是判断一个值是不是数字,而是判断一个值是不是NaN。 在判断时,会先把参数用Number()方法转换一下。 typeof(NaN)会返回number typeof(123)也会返回number 所以没法区分NaN,123 可以用isNaN(), isNaN(NaN)返回true, isNaN(123)返回false 4、任意类型转字符串 控制台中字符串是灰色的,数字是蓝色的。 要转化的类型 转换后的值 Undefined 'undefined' Null 'null' Number 把数字加引号 Boolean true->'true'   flase->'false' String 自身 Object                                  给对象加一对引号 5、任意类型转布尔值 要转化的类型 转换后的值 Undefined false Null false Number 0->false  NaN->false  Infinity->true  非零数字->true Boolean 自身 String ''->false   ' '->true  '你好'->true 根据语义判断,语义上相当于’没有’,’无’,’空’,’零’,’非数字‘的就是false,有就是true 比如Undefined、Null类型, 6、隐式类型转换 (1)显示类型转换 通过一些方法,很明确的将某种数据类型转换为另一种数据类型 Number()、parseInt()、parseFloat()明确将数据转数字类型 String()明确将数据转化成字符串 Boolean()明确将数据转换成布尔值 (2)隐式类型转换 在进行一些操作的时候,根本目的不是做类型转换。但是如果要进行操作的话,那数据必须符合某种类型。 js会在内部对数据进行一些转换。
转载请注明原文地址: https://www.6miu.com/read-73091.html

最新回复(0)