夯实Javascript基础。

基本类型有六种: null,undefined,boolean,number,string,symbol。

基本类型的值是保存在栈内存中的简单数据段

基础类型特性

基础类型最重要的特性

  • 基础类型是不变的

    • 因此:基础类型没有splice,sort之类的直接改变变量的方法
    • 强行改变基础类型会报错
      // str 不能调用 Array的 sort 和 spliceArray.prototype.sort.call('strxyz');// Uncaught TypeError: Cannot assign to read only property '2' of object '[object String]'Array.prototype.splice.call('strxyz');// Uncaught TypeError: Cannot assign to read only property 'length' of object '[object String]'// object 可以使用 Array的sort 和 spliceArray.prototype.sort.call({x: 1, y: 2});// {x: 1, y: 2}Array.prototype.splice.call({x: 1, y: 2});// []
  • 基础类型没有__proto__没有属性

      str.x = 1;console.log(str.x); // undefined
  • 所有对基础类型属性的访问都是访问的基本包装类型(String、Number、Boolean)

      当你调用 `str.length` 时,实际过程是这样的:- 创建String类型的一个实例- 在实例上调用指定的方法- 销毁这个实例var str = 'abc';var _str = new String(str);var len = _str.length;_str = null;console.log(len);

其他特性

  • typeof null === 'object'

    • (历史遗留问题,因为000开头表示对象,而null全是0)
  • 条件判断时 undefined null false NaN '' 0 -0 为 false,其他都为 true
    • (条件判断时会隐式转换为Boolean)
  • JS只有浮点类型(double),没有整型
    • 1 === 1.0
  • NaN 也属于 number 类型,并且 NaN 不等于自身。
    • var a = NaN; a !== a;
  • String 类型是类数组,具有iterator
    • typeof String('x')[Symbol.iterator] === 'function'

基础类型检测

检测基础类型用 typeof

  // typeof 只适合检测 基础类型typeof new Date() // 'object'typeof [] // 'object'typeof {} // 'object'typeof console.log // 'function'

基础类型转换

基本类型转换时,首先会调用 valueOf,然后调用 toString。并且这两个方法可以重写。

  var a = 1;var obj = {x: 1};obj.toString === '[object Object]';var arr = [2, 3];arr.toString() === '2,3';a + obj === '1[object Object]';a + arr === '12,3';

Symbol.toPrimitive该方法在转基本类型时调用优先级最高。

  let a = {valueOf() {return 1;},toString() {return '2';},[Symbol.toPrimitive]() {return 3;}}1 + a // => 4

四则运算

  • 在四则运算中,除了'+' 其他操作都会以数字进行计算
  • 如果是 + 运算,如果不是所有字面量都是number,那么会转换为字符串(toString)进行拼接

End

持续更新中,Github信息更多哦,你的⭐是我最大的支持。查看详情,

转载于:https://www.cnblogs.com/zhongmeizhi/p/10647907.html

你真的懂JavaScript基础类型吗相关推荐

  1. JavaScript内部原理实践——真的懂JavaScript吗?(转)

    通过翻译了Dmitry A.Soshnikov的关于ECMAScript-262-3 JavaScript内部原理的文章, 从理论角度对JavaScript中部分特性的内部工作机制有了一定的了解. 但 ...

  2. [导入]ASP.NET AJAX 说明文档-客户端引用-全局命名空间-JavaScript 基础类型扩展-Array 类型扩展-add 函数...

    Array.add 函数.将元素添加到 Array 的结尾处. 本函数是静态函数,使用时无需实例化.语法Array.add(array, 文章来源:http://blog.csdn.net/chswo ...

  3. [导入]ASP.NET AJAX 说明文档-客户端引用-全局命名空间-JavaScript 基础类型扩展-Array 类型扩展-contains 函数...

    Array.contains 函数.使用 contains 函数确定某元素是否在 Array 中.在Firefox浏览器中 调用 contains 函数 如果数组中有元素被设置为 undefined且 ...

  4. Typescript基础类型以及与Javascript对比

    TypeScript数据类型以及与JavaScript对比 文章目录 TypeScript数据类型以及与JavaScript对比 介绍 一.数据类型与基础数据类型 1.数据类型 2.基础数据类型 3. ...

  5. Javascript基础回顾 之(一) 类型

    本来是要继续由浅入深表达式系列最后一篇的,但是最近团队突然就忙起来了,从来没有过的忙!不过喜欢表达式的朋友请放心,已经在写了:) 在工作当中发现大家对Javascript的一些基本原理普遍存在这里或者 ...

  6. 26.JavaScript对象和基础类型之间的转换、hint、Symbol.toPrimitive、toString、valueOf

    文章目录 对象-基础类型转换 写在前面 对象类型转换规则 对象类型转换的结果 Hint String Number Default 转换需要的三个对象方法 Symbol.toPrimitive() t ...

  7. 别告诉我你懂Javascript

    2019独角兽企业重金招聘Python工程师标准>>> 过去几年我注意到技术圈一个很奇怪的现象,有太多程序员将那些他们只是有过非常浅显的了解,但其实根本就不懂的技术写到他们的简历中, ...

  8. JavaScript-百炼成仙(第1节掌握JavaScript基础1.1-1.21)

    文章目录 1.1 第一章 初入宗门 1.2 第二章 直接量 1.3 第三章 数据类型 1.4 第四章 数据类型 扩展内容: 1.5 第五章 基础考核 1.6 第六章 何老 1.7 第七章 对象数据类型 ...

  9. javascript写字技巧_怎样扎实自己的 JavaScript 基础?

    从扎实的角度来讲,首先就是要理解原理,而不是止步于工具.方法.api.更不能只以某框架为学习目标. 对于JavaScript来讲,第一要理解它的基于对象:第二要理解在js里一切都是对象:第三要理解按值 ...

  10. javascript基础系列(入门前须知)

    -----------------------小历史---------------------------- javascript与java是两种语言,他们的创作公司不同,JavaScript当时是借 ...

最新文章

  1. PXE批量部署linux操作系统
  2. C1 FlexGrid 行Style设置问题
  3. 【控制】《多无人机协同控制技术》周伟老师-第8章-危险状态下的无人机编队运动控制策略
  4. sql server服务器位置,SQL语句实现查询SQL Server服务器名称和IP地址
  5. web导入excel数据
  6. 【python】TCP协议编程
  7. 计算机网络性能常见计算公式
  8. 计算机如何寻址,计算机运算之直接寻址法与间接寻址法
  9. 计算机里的文档怎么设置密码,文件夹怎么设置密码,教您如何给电脑上文件夹设置密码...
  10. 相忘于江湖:《监控》
  11. php 星际争霸 面向对象,星际争霸之php面向对象(一)
  12. 《惢客创业日记》2019.09.02(周一) 把习惯变成闹钟
  13. Linux内部字段分离符环境变量IFS
  14. 我习于水,志成于冰——谈匠心
  15. C/C++语言100题练习计划 87——火柴棒等式(枚举实现)
  16. 波音 737 连续坠毁,AI 要背锅?
  17. Manifest merger failed : uses-sdk:minSdkVersion 21 cannot be smaller than version 24
  18. 学习《java程序设计》第一周学习总结
  19. 让GIS三维可视化变得简单-初识Cesium
  20. 提供凭证不足 无法访问这台计算机,xp系统连接win7的共享打印机时显示“提供的凭证不足”怎么办...

热门文章

  1. 最常用计算机文件后缀名,windows系统文件后缀(扩展名)简单介绍,电脑知识普及...
  2. 双方确认函_影片份额转让合同约定第一出品方出具确认函后合同生效,未出具而受让方支付投资款的,合同也生效...
  3. java虚拟机的heap监狱_JVM垃圾回收--垃圾收集器总结
  4. PyCharm2018 汉化激活
  5. 博为峰Java技术题 ——JavaSE Swing顶层容器中添加菜单栏
  6. RHEL 6.2 Error: Cannot create GC thread. Out of system resources.
  7. C#中跨工程跨项目注释的显示
  8. jdk unsafe类源码解析
  9. 概率论:假设检验、极大似然估计、无偏估计
  10. 回归预测的评价指标(附python代码)