你真的懂JavaScript基础类型吗
夯实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基础类型吗相关推荐
- JavaScript内部原理实践——真的懂JavaScript吗?(转)
通过翻译了Dmitry A.Soshnikov的关于ECMAScript-262-3 JavaScript内部原理的文章, 从理论角度对JavaScript中部分特性的内部工作机制有了一定的了解. 但 ...
- [导入]ASP.NET AJAX 说明文档-客户端引用-全局命名空间-JavaScript 基础类型扩展-Array 类型扩展-add 函数...
Array.add 函数.将元素添加到 Array 的结尾处. 本函数是静态函数,使用时无需实例化.语法Array.add(array, 文章来源:http://blog.csdn.net/chswo ...
- [导入]ASP.NET AJAX 说明文档-客户端引用-全局命名空间-JavaScript 基础类型扩展-Array 类型扩展-contains 函数...
Array.contains 函数.使用 contains 函数确定某元素是否在 Array 中.在Firefox浏览器中 调用 contains 函数 如果数组中有元素被设置为 undefined且 ...
- Typescript基础类型以及与Javascript对比
TypeScript数据类型以及与JavaScript对比 文章目录 TypeScript数据类型以及与JavaScript对比 介绍 一.数据类型与基础数据类型 1.数据类型 2.基础数据类型 3. ...
- Javascript基础回顾 之(一) 类型
本来是要继续由浅入深表达式系列最后一篇的,但是最近团队突然就忙起来了,从来没有过的忙!不过喜欢表达式的朋友请放心,已经在写了:) 在工作当中发现大家对Javascript的一些基本原理普遍存在这里或者 ...
- 26.JavaScript对象和基础类型之间的转换、hint、Symbol.toPrimitive、toString、valueOf
文章目录 对象-基础类型转换 写在前面 对象类型转换规则 对象类型转换的结果 Hint String Number Default 转换需要的三个对象方法 Symbol.toPrimitive() t ...
- 别告诉我你懂Javascript
2019独角兽企业重金招聘Python工程师标准>>> 过去几年我注意到技术圈一个很奇怪的现象,有太多程序员将那些他们只是有过非常浅显的了解,但其实根本就不懂的技术写到他们的简历中, ...
- JavaScript-百炼成仙(第1节掌握JavaScript基础1.1-1.21)
文章目录 1.1 第一章 初入宗门 1.2 第二章 直接量 1.3 第三章 数据类型 1.4 第四章 数据类型 扩展内容: 1.5 第五章 基础考核 1.6 第六章 何老 1.7 第七章 对象数据类型 ...
- javascript写字技巧_怎样扎实自己的 JavaScript 基础?
从扎实的角度来讲,首先就是要理解原理,而不是止步于工具.方法.api.更不能只以某框架为学习目标. 对于JavaScript来讲,第一要理解它的基于对象:第二要理解在js里一切都是对象:第三要理解按值 ...
- javascript基础系列(入门前须知)
-----------------------小历史---------------------------- javascript与java是两种语言,他们的创作公司不同,JavaScript当时是借 ...
最新文章
- PXE批量部署linux操作系统
- C1 FlexGrid 行Style设置问题
- 【控制】《多无人机协同控制技术》周伟老师-第8章-危险状态下的无人机编队运动控制策略
- sql server服务器位置,SQL语句实现查询SQL Server服务器名称和IP地址
- web导入excel数据
- 【python】TCP协议编程
- 计算机网络性能常见计算公式
- 计算机如何寻址,计算机运算之直接寻址法与间接寻址法
- 计算机里的文档怎么设置密码,文件夹怎么设置密码,教您如何给电脑上文件夹设置密码...
- 相忘于江湖:《监控》
- php 星际争霸 面向对象,星际争霸之php面向对象(一)
- 《惢客创业日记》2019.09.02(周一) 把习惯变成闹钟
- Linux内部字段分离符环境变量IFS
- 我习于水,志成于冰——谈匠心
- C/C++语言100题练习计划 87——火柴棒等式(枚举实现)
- 波音 737 连续坠毁,AI 要背锅?
- Manifest merger failed : uses-sdk:minSdkVersion 21 cannot be smaller than version 24
- 学习《java程序设计》第一周学习总结
- 让GIS三维可视化变得简单-初识Cesium
- 提供凭证不足 无法访问这台计算机,xp系统连接win7的共享打印机时显示“提供的凭证不足”怎么办...
热门文章
- 最常用计算机文件后缀名,windows系统文件后缀(扩展名)简单介绍,电脑知识普及...
- 双方确认函_影片份额转让合同约定第一出品方出具确认函后合同生效,未出具而受让方支付投资款的,合同也生效...
- java虚拟机的heap监狱_JVM垃圾回收--垃圾收集器总结
- PyCharm2018 汉化激活
- 博为峰Java技术题 ——JavaSE Swing顶层容器中添加菜单栏
- RHEL 6.2 Error: Cannot create GC thread. Out of system resources.
- C#中跨工程跨项目注释的显示
- jdk unsafe类源码解析
- 概率论:假设检验、极大似然估计、无偏估计
- 回归预测的评价指标(附python代码)