javascript数据类型中的一些小知识点(推荐)


Posted in Javascript onApril 18, 2019

1. undefined 和 null

undefined是一个变量而不是一个关键字,所以可以被重新赋值。为了避免歧义,一般推荐用void 0 来获取undefined;

null是一个关键字,所以可以放心地使用null。

Undefined 跟 null 有一定的表意差别,null 表示的是:“定义了但是为空”。所以,在实际编程时,我们一般不会把变量赋值为 undefined,这样可以保证所有值为 undefined 的变量,都是从未赋值的自然状态。 

function test(){
  var undefined = 123;
  console.log(undefined) 
}
test() ==> 123

2. +0 和 -0

JavaScript 中有 +0 和 -0,在加法类运算中它们没有区别,要区别他们的话,需要使用1/x 

3/0 ==> Infinity
3/-0 ==> -Infinity

3. 0.1 + 0.2 = 0.3?

在JS中,0.1+0.2是不等于0.3的,因为0.1在计算机中用二进制表示的话,会产生无限循环位数。类似于十进制中,三分之一就是无限循环小数。

所以对这些循环小数进行数学运算时,并将二进制数据再转换成十进制时,也还是无线循环小数,对末尾进行截取后,得到的值就是0.30000000000000004

正确的比较方法是使用JS提供的最小精度值,检查等式左右两边差的绝对值是否小于最小精度

Math.abs(0.1 + 0.2 - 0.3) <= Number.EPSILON
true

4. 666 和 new Number(666)的区别

666是一个number类型的数字,而Number(666)是一个对象类型的数据。

‘HELLO'.charAt(1) ==》 'E'

上门代码中,点(.)运算符提供了装箱操作,会根据一个基础类型构造一个临时对象,所以能在基础类型上调用对应对象的方法

5. parseInt 和 parseFloat

parseInt(string, radix)

javascript数据类型中的一些小知识点(推荐)

parseInt(15,6)
11 ==> 1*6+5

parseInt(0x15) 
21 ==> 16*1+5

parseFloat 则直接把原字符串作为十进制来解析,它不会引入任何的其他进制

6. 装箱转换

每一种基本类型 Number、String、Boolean、Symbol 在对象中都有对应的类,所谓装箱转换,正是把基本类型转换为对应的对象。

Symbol 比较特殊,不能直接用 new Symbol获得对应的对象, 可以用Object(Symbol('hello')) 来获得。

var symbolObject = Object(Symbol("a"));

  console.log(typeof symbolObject); //object
  console.log(symbolObject instanceof Symbol); //true
  console.log(symbolObject.constructor == Symbol); //true

7. 拆箱转换

把对象转换成number或string时,会默认进行拆箱转换,即会调用对象内置的toString或者valueOf方法将对象转换成基本类型

javascript数据类型中的一些小知识点(推荐)

这儿定义了一个obj对象,重写了它的valueOf和toString方法进行测试,可以看到,当Number(obj)时,valueOf优先于String执行,但是当这2个方法都没有返回基本类型的数据时,就会产生错误。

 javascript数据类型中的一些小知识点(推荐)

当valueOf方法返回基本类型的数据时,成功将obj转换成了数字,而且toSring方法没有执行。

 javascript数据类型中的一些小知识点(推荐)

当valueOf返回非基本类型时,toString方法才会被调用。只有当Object到 String 的拆箱转换才会优先调用 toString方法。

 注:ES6允许对象通过显式指定 toPrimitive Symbol 来覆盖原有的行为。

var o = {
    valueOf : () => {console.log("valueOf"); return {}},
    toString : () => {console.log("toString"); return {}}
  }

  o[Symbol.toPrimitive] = () => {console.log("toPrimitive"); return "hello"}


  console.log(o + "")
  // toPrimitive
  // hello

以上所述是小编给大家介绍的javascript数据类型中的一些小知识点解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
翻译整理的jQuery使用查询手册
Mar 07 Javascript
autoIMG 基于jquery的图片自适应插件代码
Mar 12 Javascript
jQuery学习笔记(4)--Jquery中获取table中某列值的具体思路
Apr 10 Javascript
利用js(jquery)操作Cookie的方法说明
Dec 19 Javascript
JavaScript中读取和保存文件实例
May 08 Javascript
jquery实现select选择框内容左右移动代码分享
Nov 21 Javascript
js点击返回跳转到指定页面实现过程
Aug 20 Javascript
jQuery子元素过滤选择器用法示例
Sep 09 Javascript
javascript特殊文本输入框网页特效
Sep 13 Javascript
jstree单选功能的实现方法
Jun 07 Javascript
js实现列表向上无限滚动
Jan 13 Javascript
js实现3D旋转效果
Aug 18 Javascript
在element-ui的select下拉框加上滚动加载
Apr 18 #Javascript
11个教程中不常被提及的JavaScript小技巧(推荐)
Apr 17 #Javascript
vue模式history下在iis中配置流程
Apr 17 #Javascript
详解Vue 全局变量,局部变量
Apr 17 #Javascript
基于vue-cli、elementUI的Vue超简单入门小例子(推荐)
Apr 17 #Javascript
Angular Excel 导入与导出的实现代码
Apr 17 #Javascript
详解Vue路由自动注入实践
Apr 17 #Javascript
You might like
使用PHPMyAdmin修复论坛数据库的图文方法
2012/01/09 PHP
PHP直接修改表内容DataGrid功能实现代码
2015/09/24 PHP
php对接java现实加签验签的实例
2016/11/25 PHP
使用laravel根据用户类型来显示或隐藏字段
2019/10/17 PHP
laravel框架中控制器的创建和使用方法分析
2019/11/23 PHP
一些经常会用到的Javascript检测函数
2010/05/31 Javascript
javascript 函数参数限制说明
2010/11/19 Javascript
用JQuery实现全选与取消的两种简单方法
2014/02/22 Javascript
Jquery操作js数组及对象示例代码
2014/05/11 Javascript
PHP+jQuery+Ajax+Mysql如何实现发表心情功能
2015/08/06 Javascript
JavaScript实现的可变动态数字键盘控件方式实例代码
2017/07/15 Javascript
Vue.js 点击按钮显示/隐藏内容的实例代码
2018/02/08 Javascript
微信网页授权并获取用户信息的方法
2018/07/30 Javascript
JavaScript私有变量实例详解
2019/01/24 Javascript
ES6小技巧之代替lodash
2019/06/07 Javascript
JS实现压缩上传图片base64长度功能
2019/12/03 Javascript
javascript中call,apply,bind的区别详解
2020/12/11 Javascript
Python实现图片转字符画的示例代码
2017/08/21 Python
python2 与python3的print区别小结
2018/01/16 Python
python list删除元素时要注意的坑点分享
2018/04/18 Python
Python批量修改图片分辨率的实例代码
2019/07/04 Python
python 列表、字典和集合的添加和删除操作
2019/12/16 Python
CSS3制作文字半透明倒影效果的两种实现方式
2014/08/08 HTML / CSS
美国网上花店:JustFlowers
2017/02/12 全球购物
职业教育毕业生求职信
2013/11/09 职场文书
物流专业自荐信
2014/05/23 职场文书
酒店总经理岗位职责范本
2014/08/08 职场文书
观看《周恩来的四个昼夜》思想汇报
2014/09/12 职场文书
事业单位个人查摆问题及整改措施
2014/10/28 职场文书
奖学金感谢信
2015/01/21 职场文书
本科毕业答辩开场白
2015/05/27 职场文书
pdf论文中python画的图Type 3 fonts字体不兼容的解决方案
2021/04/24 Python
Golang 实现超大文件读取的两种方法
2021/04/27 Golang
浅谈python数据类型及其操作
2021/05/25 Python
分析Python感知线程状态的解决方案之Event与信号量
2021/06/16 Python
Python matplotlib绘制雷达图
2022/04/13 Python