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的多级联动代码
Jan 24 Javascript
Javascript Request获取请求参数如何实现
Nov 28 Javascript
js获取或设置当前窗口url参数的小例子
Oct 14 Javascript
详解JavaScript的另类写法
Apr 11 Javascript
第四章之BootStrap表单与图片
Apr 25 Javascript
JS实现左右无缝轮播图代码
May 01 Javascript
vue 动态改变静态图片以及请求网络图片的实现方法
Feb 07 Javascript
vue中如何动态绑定图片,vue中通过data返回图片路径的方法
Feb 07 Javascript
JsChart组件使用详解
Mar 04 Javascript
浅谈webpack+react多页面开发终极架构
Nov 11 Javascript
vue在index.html中引入静态文件不生效问题及解决方法
Apr 29 Javascript
vue打开子组件弹窗都刷新功能的实现
Sep 21 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 5.0对象模型深度探索之属性和方法
2008/03/27 PHP
php学习之流程控制实现代码
2011/06/09 PHP
thinkPHP实现多字段模糊匹配查询的方法
2016/12/01 PHP
CI(CodeIgniter)框架视图中加载视图的方法
2017/03/24 PHP
php策略模式简单示例分析【区别于工厂模式】
2019/09/25 PHP
解决 firefox 不支持 document.all的方法
2007/03/12 Javascript
THREE.JS入门教程(1)THREE.JS使用前了解
2013/01/24 Javascript
一款由jquery实现的整屏切换特效
2014/09/15 Javascript
轻松搞定jQuery.noConflict()
2016/02/15 Javascript
jQuery实现带水平滑杆的焦点图动画插件
2016/03/08 Javascript
通过vue-cli来学习修改Webpack多环境配置和发布问题
2017/12/22 Javascript
jQuery简单实现向列表动态添加新元素的方法示例
2017/12/25 jQuery
详解Vue.js中.native修饰符
2018/04/24 Javascript
详解ES7 Decorator 入门解析
2019/02/18 Javascript
JavaScript中工厂函数与构造函数示例详解
2019/05/06 Javascript
VUE UPLOAD 通过ACTION返回上传结果操作
2020/09/07 Javascript
Tornado Web服务器多进程启动的2个方法
2014/08/04 Python
python互斥锁、加锁、同步机制、异步通信知识总结
2018/02/11 Python
python 实现得到当前时间偏移day天后的日期方法
2018/12/31 Python
详解Python中pandas的安装操作说明(傻瓜版)
2019/04/08 Python
python redis连接 有序集合去重的代码
2019/08/04 Python
4行Python代码生成图像验证码(2种)
2020/04/07 Python
JAVA及PYTHON质数计算代码对比解析
2020/06/10 Python
加拿大快时尚零售商:Ardene
2018/02/14 全球购物
英国乡村时尚和宠物用品专家:Pet & Country
2018/07/02 全球购物
巴西Bo.Bô官方在线商店:经营奢侈品时尚业务
2020/03/16 全球购物
.net开发工程师面试题
2014/02/25 面试题
业务主管岗位职责
2013/11/20 职场文书
廉洁教育学习材料
2014/05/19 职场文书
法人授权委托书
2014/09/16 职场文书
铣工实训报告
2014/11/05 职场文书
党支部承诺书
2015/01/20 职场文书
爱晚亭导游词
2015/02/09 职场文书
初中毕业感言300字
2015/07/31 职场文书
英国数字版游戏销量周榜公布 《小缇娜的奇幻之地》登顶
2022/04/03 其他游戏
nginx配置之并发频次限制
2022/04/18 Servers