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 相关文章推荐
mysql输出数据赋给js变量报unterminated string literal错误原因
May 22 Javascript
Jquery实现列表(隔行换色,全选,鼠标滑过当前行)效果实例
Jun 09 Javascript
3种Jquery限制文本框只能输入数字字母的方法
Dec 03 Javascript
jQuery对于显示和隐藏等常用状态的判断方法
Dec 13 Javascript
JavaScript类型系统之正则表达式
Jan 05 Javascript
XML、HTML、CSS与JS的区别整理
Feb 18 Javascript
Bootstrap轮播插件中图片变形的终极解决方案 使用jqthumb.js
Jul 10 Javascript
微信小程序 实现tabs选项卡效果实例代码
Oct 31 Javascript
JavaScript中定时控制Throttle、Debounce和Immediate详解
Nov 17 Javascript
Vue网页html转换PDF(最低兼容ie10)的思路详解
Aug 24 Javascript
微信小程序实现多选框全选与取消全选功能示例
May 14 Javascript
javascript this指向相关问题及改变方法
Nov 19 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
PHP 第二节 数据类型之数值型
2012/04/28 PHP
php实现memcache缓存示例讲解
2013/12/04 PHP
php可扩展的验证类实例(可对邮件、手机号、URL等验证)
2015/07/09 PHP
PHP判断文件是否被引入的方法get_included_files用法示例
2016/11/29 PHP
PHP编程文件处理类SplFileObject和SplFileInfo用法实例分析
2017/07/22 PHP
laradock环境docker-compose操作详解
2019/07/29 PHP
js event事件的传递与冒泡处理
2009/12/06 Javascript
JavaScript Date对象 日期获取函数
2010/12/19 Javascript
localResizeIMG先压缩后使用ajax无刷新上传(移动端)
2015/08/11 Javascript
javascript设计模式--策略模式之输入验证
2015/11/27 Javascript
jQuery Mobile框架中的表单组件基础使用教程
2016/05/17 Javascript
javascript中JSON.parse()与eval()解析json的区别
2016/05/19 Javascript
js实现兼容PC端和移动端滑块拖动选择数字效果
2017/02/16 Javascript
Omi v1.0.2发布正式支持传递javascript表达式
2017/03/21 Javascript
easyui combogrid实现本地模糊搜索过滤多列
2017/05/13 Javascript
最通俗易懂的javascript变量提升详解
2017/08/05 Javascript
React中使用collections时key的重要性详解
2017/08/07 Javascript
如何用input标签和jquery实现多图片的上传和回显功能
2018/05/16 jQuery
js验证身份证号码记录的方法
2019/04/26 Javascript
Layui带搜索的下拉框的使用以及动态数据绑定方法
2019/09/28 Javascript
使用axios发送post请求,将JSON数据改为form类型的示例
2019/10/31 Javascript
微信小程序实现发微博功能的示例代码
2020/06/24 Javascript
python ip正则式
2009/05/07 Python
在Python的Bottle框架中使用微信API的示例
2015/04/23 Python
Python六大开源框架对比
2015/10/19 Python
python套接字流重定向实例汇总
2016/03/03 Python
Python 实现微信防撤回功能
2019/04/29 Python
简单了解python装饰器原理及使用方法
2019/12/18 Python
Python 实现键盘鼠标按键模拟
2020/11/18 Python
iRobot官网:改变生活的家用机器人品牌
2016/09/20 全球购物
纽约JewelryAffairs珠宝店:精细金银时尚首饰
2017/02/05 全球购物
英国最大的户外商店:Go Outdoors
2019/04/17 全球购物
餐饮收银员岗位职责
2014/02/07 职场文书
工作业绩不及格检讨书
2014/10/28 职场文书
资产移交协议书
2016/03/24 职场文书
Nginx 负载均衡是什么以及该如何配置
2021/03/31 Servers