博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript基础—数据类型
阅读量:6682 次
发布时间:2019-06-25

本文共 5648 字,大约阅读时间需要 18 分钟。

预备知识

  1. 输出信息,在开发的过程中,我们需要调试代码,这就用到了console.log,比如从接口拿到的数据data,可以这样打印:

    console.log("data=>",data)复制代码
  2.   我们需要知道js代码具体写在哪里:
  • html中

        
    Title复制代码

  • 单独创建js文件,写在js文件中,开发中一般使用这个

变量声明

var a="a";//es6之前的声明方式let a1=1;//es6声明变量的方式const a2=2;//es6声明常量的方式console.log("a=>",a)//a=> aconsole.log("a1=>",a1)//a1=> 1console.log("a2=>",a2)//a2=> 2复制代码

数据类型

js的数据类型不同于c已经java,主要分为五大类:String、Number、Boolean、null、undefined。另外还有一种复杂的数据类型,Object。

字符串String

  • 声明方式

var a="a";console.log("a=>",a)//a=> aconsole.log("a typeof=>",typeof a)//a typeof=> string复制代码

其中typeof是显示类型

  • 其他类型转换成字符串
  1. toString()

var a=1;//number类型,先不用理解console.log("a typeof=>",typeof a)//a typeof=> numbervar a1=a.toString()//toString()是个方法,把其他类型转换成字符串,然后返回console.log("a1=>",a1)//a1=> 1console.log("a1 typeof=>",typeof a1)//a1 typeof=> string复制代码
  2.String()

  

var a=1;//number类型,先不用理解console.log("a typeof=>",typeof a)//a typeof=> numbervar a1=String(a)//String()是个方法,把其他类型转换成字符串,然后返回console.log("a1=>",a1)//a1=> 1console.log("a1 typeof=>",typeof a1)//a1 typeof=> string复制代码

  • 字符串拼接
字符串可以使用+号拼接

var a="hello";var a1="world!";var a2=a+" "+a1;console.log("a2=>",a2)//a2=> hello world!console.log("a2 typeof=>",typeof a2)//a2 typeof=> string复制代码

  • 字符串方法
字符串的方法是字符串中的重点,在开发的时候我们常常要用到,首先我们先来了解这些方法。
  1. charAt

var a="www.baidu.com";var a1=a.charAt(4)//获取到指定下标的字符,从0开始计算,拿到的就是bconsole.log("a1=>",a1)//a1=> b复制代码
  2.substring

var a="www.baidu.com";var a1=a.substring(4,9)//截取字符串,包前不包后console.log("a1=>",a1)//a1=> baidu复制代码

  3.slice

var a="www.baidu.com";var a1=a.slice(4,9)//截取字符串,包前不包后console.log("a1=>",a1)//a1=> baidu复制代码

  4.indexOf

var a="www.baidu.com";var a1=a.indexOf("c")//c第一次出现的位置console.log("a1=>",a1)//a1=> 10复制代码

  5.lastIndexOf

var a="www.baidu.com";var a1=a.lastIndexOf("c")//c最后一次出现的位置console.log("a1=>",a1)//a1=> 10复制代码

  6.split

var a="www.baidu.com";var a1=a.split(".")//split的意思是分开,里面接分开的依据,这里是依据.分离a字符串,得到一个数组console.log("a1=>",a1)//(3) ["www", "baidu", "com"]console.log("a1 typeof=>",typeof a1)//a1 typeof=> object复制代码

  7.toUpperCase和toLowerCase

var a="www.baidu.com";var a1=a.toUpperCase();//转成大写console.log("a1=>",a1)//WWW.BAIDU.COMvar a2=a1.toLowerCase();//转成小写console.log("a2=>",a2)//a2=> www.baidu.com复制代码

在开发中最常用到的是substring、slice和split,重点掌握这三个即可。

数值number

  • 包含:正数、负数、零、小数、以及特殊的NaN

var a=1;//正数var a1=-1;//负数var a2=1.0;//小数var a3=0;//零var a4=NaN;//全称Not a Number,不是一个数值,但是它的类型还是一个数值console.log("a=>",typeof a)//a=> numberconsole.log("a1=>",typeof a1)//a1=> numberconsole.log("a2=>",typeof a2)//a2=> numberconsole.log("a3=>",typeof a3)//a3=> numberconsole.log("a4=>",typeof a4)//a4=> number复制代码

其中特别注意小数和NaN,对于小数,面试官特别喜欢问,我就被我的架构师组长问到小数的问题。

比如,他给我的面试题:

var a=0.1;//正数var a1=0.2;var a2=a+a1;console.log("a2=>",a2)//a2=> 0.30000000000000004复制代码

问我为什么会这样。那是因为js对小数的处理不够准确,也可以说多小数的处理不够好。答成这样,可以拿个毕业生的工资了。

如果要拿个程序员的工资,要这样答:

JS在运算过程中是先把十进制的运算数转换成二进制,再做运算,运算完成后再转换成十进制,转换时有些小数部分十进制不能正确转换成二进制。

为什么要注意这点,我在用typescript开发node后台的时候做过金额处理,如果以元为单位,就会有0.5元,0.05元这样的金额。解决办法:

我们可以乘以100再做运算
  • Math对象

console.log(Math.pow(2,53));     //--> 2的53次方console.log(Math.round(.6));     //--> 1.0 四舍五入,返回的还是浮点型console.log(Math.ceil(.6));      //--> 1.0 向上取整console.log(Math.floor(.6));     //--> 0.0 向下取整console.log(Math.abs(-1));       //--> 1 取绝对值console.log(Math.max(2, 5, 6));  //--> 6 取最大值console.log(Math.min(-1, -2, 1));//--> -2 取最小值console.log(Math.random());      //--> 取0-1的随机数console.log(Math.PI)             //--> 圆周率πconsole.log(Math.E  )            //--> e: 自然对数的底数console.log(Math.sqrt(3));       //--> 3的平方根console.log(Math.pow(3, 1/3));   //--> 3的立方根console.log(Math.sin(0));        //--> 三角函数: 还有Math.cos(), Math.atan()等console.log(Math.log(10));       //--> 10的自然对数console.log(Math.log(100)/Math.LN10); //-->以10为底100的对数console.log(Math.exp(3));        //--> e的三次幂复制代码

这里面,经常用到的是Math.round、Math.ceil、Math.floor、Math.random、Math.abs、Math.max和Math.min。

Math.ceil和Math.floor,我们在学动画的时候就会用到,原生的js动画,当然现在插件很多,也不需要自己封装动画。

Math.random,在开发中,比如手机验证,我们发的手机收到的4个数字或者6个数字的短信就是用这个生成的数。

  • 数值类型转换

var a="1";console.log("a typeof=>",typeof a);//a typeof=> stringvar a1=a-0;console.log("a1=>",a1);console.log("a1 typeof=>",typeof a1);//a1 typeof=> numbervar a2=a*1;console.log("a2=>",a2);//a2=> 1console.log("a2 typeof=>",typeof a2);//a2 typeof=> number复制代码

以上都是隐式转换

var a="1";console.log("a typeof=>",typeof a);//a typeof=> stringvar a1=Number(a);console.log("a1=>",a1);console.log("a1 typeof=>",typeof a1);//a1 typeof=> number复制代码

以上都是显式转换

  • 数值方法
parseInt():取整,小数部分直接去掉

var a=1.5;var a1=parseInt(a);console.log("a1=>",a1);//a1=> 1复制代码

parseFloat():转成小数

布尔Boolean

开发中if的比较一般都需要用到它,可以说是非常常见的了。

console.log(Boolean(0));//falseconsole.log(Boolean(1));//trueconsole.log(Boolean(-0));//falseconsole.log(Boolean(undefined));//falseconsole.log(Boolean(null));//falseconsole.log(Boolean(NaN));//falseconsole.log(Boolean(''));//falseconsole.log(NaN==NaN);//false复制代码

Null和undefined

var a;console.log("a=>",a);//a=> undefinedvar a1=null;console.log("a1=>",a1);//a1=> null复制代码

null是很多语言都有的类型,意思是空,和go的nil一个意思。

undefined表示变量未定义的值,如果函数没有返回值,也会返回undefined。

这里要注意一个点,再比较的时候

null == undefined 返回true 

 null === undefined 返回false

对象Object

var a={};console.log("a typeof=>",typeof a);//a typeof=> objectvar a1=[];console.log("a1 typeof=>",typeof a1);//a typeof=> objectvar a2=null;console.log("a2 typeof=>",typeof a2);//a typeof=> objectvar a3=undefined;console.log("a3 typeof=>",typeof a3);//a3 typeof=> undefined复制代码

可能会有人奇怪,null为什么是obj,undefined还是undefined。因为null是特殊的object对象。

var a={};console.log("a=>",a);//a=> {}a.b=0;a.c="1"console.log("a=>",a);//a=> {b: 0, c: "1"}复制代码

var a=[];console.log("a=>",a);//a=> []a[0]=0;a[1]="1"console.log("a=>",a);//a=> (2) [0, "1"]复制代码

开发中最常用到这样的写法,可以很方便的给对象添加内容。

转载于:https://juejin.im/post/5b73840ef265da27e43d1602

你可能感兴趣的文章
我的友情链接
查看>>
我的友情链接
查看>>
初出茅庐
查看>>
起航--dream
查看>>
c语言学习记录--求出1000以内所有完数,并输出其因子
查看>>
cisco nat配置
查看>>
配置YUM服务器[(图文)附禁ROOT方法]
查看>>
实例ansible-role :通过role进行二进制批量部署mariadb从而批量上线sql系统
查看>>
思科交换机镜像端口介绍配置
查看>>
独家揭秘语音视频聊天室开发顶尖制作教程
查看>>
冲向大牛之安卓:学习界面怎么在程序中画出来
查看>>
.net 签名加密实现的一种简单方法
查看>>
数据结构 试探法算法学习笔记
查看>>
nomad安装
查看>>
我的友情链接
查看>>
MySQL主备复制数据不一致的情况
查看>>
CU3ER非常Cool的3D效果的Flash Slider
查看>>
中财讯 爆遍历目录漏洞
查看>>
MongoDB 数据库备份脚本
查看>>
Linux常用命令
查看>>