你真的懂JavaScript基础类型吗
夯实Javascript基础。
基本类型有六种: null,undefined,boolean,number,string,symbol。
基本类型的值是保存在栈内存
中的简单数据段
基础类型特性
基础类型最重要的特性
- 基础类型是不变的
- 因此:基础类型没有splice,sort之类的直接改变变量的方法
- 强行改变基础类型会报错
// str 不能调用 Array的 sort 和 splice Array.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 和 splice Array.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信息更多哦,你的⭐是我最大的支持。查看详情,
你真的懂JavaScript基础类型吗的更多相关文章
- JavaScript 基础类型,数据类型
1.基础类型:undefined,null,Boolean,Number,String,Symbol Undefined类型:一个没有被赋值的变量会有个默认值undefined; Null类型:nul ...
- JavaScript内部原理实践——真的懂JavaScript吗?(转)
通过翻译了Dmitry A.Soshnikov的关于ECMAScript-262-3 JavaScript内部原理的文章, 从理论角度对JavaScript中部分特性的内部工作机制有了一定的了解. 但 ...
- 踩过了这些坑,你真的懂python基础吗?
一.浮点数的计算 思考1:打印结果是什么? a = 0.1 b = 0.2 c = 0.3 print(b == a + a) 思考2:打印结果是什么? a = 0.1 b = 0.2 c = 0.3 ...
- 你真的懂javascript中的 “this” 吗?
一.前言: 我们知道 "this" 是javascript语言的一个关键字,在编写javascript代码的时候,经常会见到或者用到它. 但是,有一部分开发朋友,对 "t ...
- Javascript基础回顾 之(一) 类型
本来是要继续由浅入深表达式系列最后一篇的,但是最近团队突然就忙起来了,从来没有过的忙!不过喜欢表达式的朋友请放心,已经在写了:) 在工作当中发现大家对Javascript的一些基本原理普遍存在这里或者 ...
- 玩转JavaScript OOP[0]——基础类型
前言 long long ago,大家普遍地认为JavaScript就是做一些网页特效的.处理一些事件的.我身边有一些老顽固的.NET程序员仍然停留在这种认知上,他们觉得没有后端开发肯定是构建不了系统 ...
- javascript的语法作用域你真的懂了吗
原文:javascript的语法作用域你真的懂了吗 有段时间没有更新了,思绪一下子有点转不过来.正应了一句古话“一天不读书,无人看得出:一周不读书,开始会爆粗:一月不读书,智商输给猪.”.再加上周五晚 ...
- JavaScript基础回顾一(类型、值和变量)
请看代码并思考输出结果 var scope = 'global'; function f(){ console.log(scope); var scope = 'local'; console.log ...
- JavaScript学习 - 基础(二) - 基础类型/类型转换
基础类型 - 数字类型(Number) 1.最基本的数据类型 2.不区分整型数值和浮点型数值 3.所有数字采用64位浮点格式存储,相当于Java和C语言中double格式 4.能表示的最大值 +- 1 ...
随机推荐
- 【JVM虚拟机】(7)---深入理解Class中-属性集合
#[JVM虚拟机](7)---深入理解Class中-属性集合 之前有关class文件已经写了两篇博客: 1.[JVM虚拟机](5)---深入理解JVM-Class中常量池 2.[JVM虚拟机](6)- ...
- ssm上传图片
ssm上传图片 1 需求 添加客户时上传图片和客户修改信息是上传图片. 2 思路 首先,数据库创建pic字段,类型为varchar,通过逆向工程重新生成mapper接口和xml文件 ...
- JavaScript构造函数
JavaScript不同于其他强类型语言,没有类的概念,但是它支持可以与实例共同使用特殊的Constructor构造器,使用new关键字创建新的实例,并告知JavaScript使用对象的内规则去定制这 ...
- Android 8.0对隐式广播的进一步限制
项目targetSdkVersion升级到26后,对应的的是Android O版本,即Android 8.0系统.经测试发现针对8.0及以上安卓版本手机,AndroidMainfest.xml中静态注 ...
- ASP .NET SignalR起步
在网站开发中,时常需要使用消息推送功能,http协议是无状态连接,我们需要一个类似桌面程序中socket保持服务器和客户端连接的技术.signalr就是这样一个技术,他能保持网站页面和服务器的一个长连 ...
- Android 项目中用得最多最火的第三方框架可能都在这里了
分类 二级分类 框架名称 简介 Star 数 最近更新 UI 刷新 SmartRefreshLayout 智能下拉刷新框架 14k 18天 UI 刷新 Android-PullToRefresh 比较 ...
- Sqlserver 事务处理模板
USE StuDB GO /****** Object: StoredProcedure [dbo].[proc_live_send_answer_v4] Script Date: 06/20/201 ...
- 不一样的 SQL Server 日期格式化
不一样的 SQL Server 日期格式化 Intro 最近统计一些数据,需要按天/按小时/按分钟来统计,涉及到一些日期的格式化,网上看了一些文章大部分都是使用 CONVERT 来转换的,SQL Se ...
- spring 【二】学习之spring EL
spring EL-spring 表达式语言,支持在xml和注解的形式,类似于JSP的el表达式的形式. 其主要使用@Value注解的结构形式 其主要功能 [1].注入普通字符串 [2].注入操作系统 ...
- 教你如何把openfire的muc聊天室改造为群
openfire群聊与QQ群对比 应该是去年的时候开始接触openfire,当时在分析后发现基于xmpp协议的openfire已经具备了群聊的功能.也就没太当回事,觉得加点功能就可以做成类似于QQ群的 ...