你真的懂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)
- 条件判断时
undefinednullfalseNaN''0-0为 false,其他都为 true- (条件判断时会隐式转换为Boolean)
- JS只有浮点类型(double),没有整型
1 === 1.0
- NaN 也属于 number 类型,并且 NaN 不等于自身。
var a = NaN; a !== a;
String类型是类数组,具有iteratortypeof 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 ...
随机推荐
- csdn阅读更多需要注册登录csdn
csdn目前设置每日使用5次后必须登录才能看到阅读更多的内容,异常恶心.因此搜罗了方法去解决这个问题 方法一 打开想看的csdn后,在console里边执行以下代码: $("div.arti ...
- [asp.net core 源码分析] 01 - Session
1.Session文档介绍 毋庸置疑学习.Net core最好的方法之一就是学习微软.Net core的官方文档:https://docs.microsoft.com/zh-cn/aspnet/cor ...
- Kubernetes集群部署关键知识总结
Kubernetes集群部署需要安装的组件东西很多,过程复杂,对服务器环境要求很苛刻,最好是能连外网的环境下安装,有些组件还需要连google服务器下载,这一点一般很难满足,因此最好是能提前下载好准备 ...
- Springboot文件上传代码笔记
1.在src下创建filter包,包内Class名UploadFilter package com.gd.filter; import org.apache.catalina.servlet4prev ...
- SAP MM 预留单据的历史修改记录?
SAP MM 预留单据的历史修改记录? 在笔者眼里,SAP系统是一个高度严谨的软件系统.用户在SAP系统里的相关操作,系统都会做记录.用户对于系统的相关单据的增删改,SAP系统都有保留change h ...
- SqlServer_查看SQLServer版本信息
方法一: 执行sql语句 SELECT @@VERSION 方法二: 连接SQL Server Management Studio利用Object Explorer显示的主要版本号信息,显示当前实例产 ...
- Velocity 模板引擎的应用
springboot三层机构,还有数据映射待实体.肯定需要一套模板引擎呀.那不然还手写不成. 根据我们的实际业务需求,我添加了一套数据库反向生成实体类的模板,用的是Velocity 的引擎. 不多说直 ...
- Python开发:部分第三方库无法在线安装解决方法
前言:Python开发:Python2和Python3的共存和切换使用 一.问题如下: 1.截图: 2.错误信息: Could not find a version that satisfies th ...
- 虎牙直播张波:掘金Nginx日志
大家好!我是来自虎牙直播技术保障部的张波.今天主要会从数据挖掘层面跟大家探讨一下 Nginx 的价值.OpenResty 在虎牙的应用场景主要 WAF 和流控等方面,我今天主要分享的是“ Nginx ...
- 《深入理解Java虚拟机》-----第7章 虚拟机类加载机制——Java高级开发必须懂的
代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是编程语言发展的一大步. 7.1 概述 上一章我们了解了Class文件存储格式的具体细节,在Class文件中描述的各种信息,最终都需要 ...