JS中一定要了解的数据类型和数据转换
一、数据类型
前言
Js中的类型只有6种,其中基本数据类型有5种分别为string,number,boolen,null,undefined,引用类型有一种,就是object,object是一个大的综合体,在JS中除了那5个基本数据类型以外,其他的一切皆对象。以下是最近自学js整理的一些笔记,希望能让更多初学者了解到数据类型的基本概念。
正文
1.获取变量类型
typeof
var age = 18; console.log(typeof age); // 'number'
2.基本数据类型
字符串(String),数值型(number),布尔型(boolean)
<script> //a.字符串 var a = "laowangba"; //document.write(typeof(a)); //数值 var b = 123; var b1 = 123.1;---> 同样是number类型,不要判断两个浮点数是否相等. //布尔型 var c = ture; var d = false; </script>
- Boolean字面量: true和false,区分大小写
- 计算机内部存储:true为1,false为0
3.复合数据类型
对象(object),数组(array object)
<script> //对象 var e = {'name':'niu','age':18}; ---> 等价于PHP中class a() </script>
4.其他数据类型
函数,null,undefined
<script> //函数类型 var j = function(){}; //document.write(j); ---> 这里可能会有争议,但typeof打印出来的确就有funcion类型 //null类型 var h = null; //document.write(h); ---> 空对象,对象类型中的一个分支,没有此对象的时候会显示null. //alert(document.getElementById('notExistElement')); --->显示为null,找不到此对象 //undefined类型 var g; //document.write(i); ---> 打印一个不存在的变量,定义为undefined,未定义或者定义了,但未初始化 //alert(null == undefined);---> 显示结果是true //alert(null === undefined);---> 显示结果是false </script>
二、数据类的转换
2.1 隐式转换
隐式转换常用于if判断等需要直接结果的地方.
<script> undefined == null; // true 1 == true; // true 2 == true; // false 0 == false; // true 0 == ''; // true NaN == NaN; // false ---> NaN 注意:这是JS中一个特殊的表示,NaN表示不等于任何值.这个数值表示本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了)。任何数值除以0都会导致错误而终止程序执行。一般使用isNaN()来判断是否为NaN类型. [] == false; // true [] == ![]; // true '6' - '3' // 3 1234 + 'abcd' // "1234abcd" </script>
- undefined与null相等,但不恒等(===)
- 一个是number一个是string时,会尝试将string转换为number
- 隐式转换将boolean转换为number,0或1
- 隐式转换将Object转换成number或string,取决于另外一个对比量的类型
- 对于0、空字符串的判断,建议使用 “===”
- “==”会对不同类型值进行类型转换再判断,“===”则不会.它会先判断两边的值类型,类型不匹配时直接为false
2.2显示转换
Number:
var a = Number('1'); var b = Number(1); var c = Number('c'); var d = Number(null); var e = Number(undefined); console.log(a,b,c,d,e); // 1 1 NaN 0 NaN // Number()可以把任意值转换成数值,如果要转换的字符串中有一个不是数值的字符,返回NaN
String:
String(1234); // "1234" String('abcd'); // "abcd" String(true); // "true" String(undefined); // "undefined" String(null); // "null"
Boolean:
var a = Boolean('0'); var b = Boolean(0); var c = Boolean('1'); var d = Boolean(null); var e = Boolean(undefined); var f = Boolean(NaN); console.log(a,b,c,d,e,f); //true false true false false false // 0、''(空字符串) 、null、 undefined 、NaN 会转换成false 其它都会转换成true
parseFloat:
var a = parseFloat('1.2df'); //1.2 var b = parseFloat('1.3.4'); //1.3 var c = parseFloat('c12'); //NaN var d = parseFloat(null); //NaN var e = parseFloat(undefined); //NaN console.log(a,b,c,d,e); // parseFloat() 把字符串转换成浮点数 // parseFloat()和parseInt非常相似, // 不同之处在与parseFloat会解析第一个 . 遇到第二个.或者非数字结束 // 如果解析的内容里只有整数,解析成整数
parseInt()
var a = parseInt('1.2df'); // var b = parseInt(1); var c = parseInt('c12'); var d = parseInt(null); var e = parseInt(undefined); console.log(a,b,c,d,e); //1 1 NaN NaN NaN // 如果第一个字符是数字会解析,直到遇到非数字结束 // 如果第一个字符不是数字或者符号就返回NaN
2.3 字符串特别说明
1. 单引号和双引号均可解析转义字符
2. 单引号和双引号均不能解析变量
3. 变量与字符串,变量与变量要使用+来拼接,区分开PHP
4. 单引号和双引号可以互相嵌套,如果单引号中药嵌套单引号,需要将单引号转义,同理,双引号相同
<script> //单引号和双引号为啥不能解析说明 var a = 10; alert('a'); ---> 此处懵逼,到底是要输出变量还是字符串?它不像PHP,有个$直接可以区分开变量和字符串 alert('a'+ a); //+连接说明 alert('hello' + 3 + 'world'); //hello3world alert(3 + 2 + 'hello' + 5 + 'world'); //5hello5world alert(4 + 4 + 'hello' + 4 + 5 + 'world'); //8hello45world ---> 左往右连接,两个数字会理解为加号,直到碰见不为数值则理解为拼接. </script>
如何打印一下字符串:
var s = '我很喜欢 \"雷锋 \'的精神\' \"'; console.log(s);
- 字符串长度
length属性用来获取字符串的长度
var str = 'Hello World'; console.log(str.length);
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
VBA反序列化Json并填充
VBA部分 Function JsonToObject(str) Set myJs = CreateObject("MSScriptControl.ScriptControl") myJs.Language = "javascript" Set myObject = myJs.Eval("eval(" & str & ")") Set myJs = Nothing Set JsonToObject = myObject End Function Sub FillingData() Set mySheet = ActiveSheet Let myIndex = 1 Let lieming = Array("c1", "c2", "c3") For Each a In lieming mySheet.Cells(1, myIndex) = CStr(a) myIndex = myIndex + 1 Next a Let myIndex = 1 Let str1 = "[{'c1':'服务品质','c2temp':[{'c3':'IRR','c2temp':['投诉处理平均时...
- 下一篇
Java描述设计模式(22):策略模式
本文源码:GitHub·点这里 || GitEE·点这里 一、生活场景 每年双十一,各大电商平台会推出不同的满减策略,当用户的消费金额满一定额度后,会进行减去一定的优惠额度,从而来一波清仓甩卖,使用策略模式来描述该流程。 public class C01_InScene { public static void main(String[] args) { // 选择满减策略,走相应的计算方式 FullReduce strategy = new Full100 (); Payment price = new Payment(strategy); double quote = price.payment(300); System.out.println("最终价格为:" + quote); } } /** * 付款 */ class Payment { private FullReduce fullReduce ; public Payment (FullReduce fullReduce){ this.fullReduce = fullReduce ; } public double p...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS关闭SELinux安全模块
- CentOS8编译安装MySQL8.0.19
- CentOS7设置SWAP分区,小内存服务器的救世主
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题