前端面试中常被问到的问题之一就是“JavaScript的基本类型有几种?”。
有的回答“数字、字符串、布尔”,有的可能会再加上“Null、Undefined”。而有人可能认为“object”也是基本类型。到底是什么样呢?
所谓“基本类型(primitive types)”的概念ECMAScript(V3,V5)中压根就没有,它只是将类型分为6种。
ECMAScript只提到类型,用types表示,在V3,V5整个文档搜关键字“primitive”也没见“primitive type”,“primitive value”倒是有,如true/false/0-9等。这说明规范压根就没有所谓的“基本类型”、“原始类型”一说(primitive types)。如果非要说有那么object明显也是,即有6种基本类型。
一些书籍却经常使用这个概念,如《JavaScript高级程序设计》第一版、第二版,第三版。
第一版提到有5种原始类型,即Undefined、Null、Boolean、Number、String
第二版和第三版又搞出了个simple data type,翻译为简单数据类型(也称为基本数据类型),称对象为复杂数据类型。
另一本经典书《JavaScript权威指南(第6版)》第3章也提到了primitive types
先分为基本类型(primitive types)和对象类型,基本类型又分为数字,字符串,布尔,及两个特殊null,undefined。
5年前JavaScript方面的书籍还很少,这两本书就是其中之二,影响也很大,可谓经典。因此受此影响的JSer不乏少数。我想书作者把语言类型分为基本类型(元类型)和对象类型(复杂类型)也是符合学习逻辑的,复杂类型由简单类型组合而成。另外也是受到其它语言如Java的影响,它们也是把类型分为基本类型(8种)和对象类型。
但ECMAScript中没有所谓的primitive types,就好比它没有类(class)的概念一样(具有其它语言能力的人仍然喜欢在JavaScript使用名词“类”)。它里面提到的就是类型,可以把它理解成基本类型,但也应该是6种。这里的基本类型也不是Java中的基本类型,因为它包含了复杂数据类型-对象。
不是所有的书都认为JavaScript中基本类型只有5种(不包括对象),《JavaScript语言精髓与编程实践》认为是6种,如下
它没有将null归为其中,却增加了function类型。 它的依据是typeof的结果只有6种(仅含ES自身,不包括宿主对象),如下
var a = 1, b = '2', c = true, d, e = null, f = function(){} typeof a === 'number'; // true typeof b === 'string'; // true typeof c === 'boolean'; // true typeof d === 'undefined'; // true typeof e === 'object'; // true typeof f === 'function'; // true
一共是6中类型,注意null的类型时object。有的书说null的实现是当初的一个错误,谁知道呢。
我们来看wiki中基本数据类型的定义
- a basic type is a data type provided by a programming language as a basic building block. Most languages allow more complicated composite types to be recursively constructed starting from basic types.
- a built-in type is a data type for which the programming language provides built-in support. In most programming languages, all basic data types are built-in. In addition, many languages also provide a set of composite data types. Opinions vary as to whether a built-in type that is not basic should be considered "primitive".
翻译一下
- 基本类型是这样一种数据类型,它是由编程语言提供的最基本的构建块,多数语言还允许众多复杂的由基本类型组成的复合数据类型
- 内置类型是由编程语言自身提供的类型,多数编程语中所有的基本类型都是内置的。此外,很多语言还提供一组复合数据类型。一个内置类型是不是该认为是“原始的”的类型这个一直存在争议。
下次再有人问这个问题如何作答呢?
相关推荐
虽然“基本类型(primitive types)”这一术语在ECMAScript规范中并未正式使用,但在JavaScript社区中广泛使用,它用来描述JavaScript中的一些简单不可变的数据类型。在讨论JavaScript的类型时,通常会分为两类:...
1.2 浏览器之争 1.2.1 DHTML 1.2.2 浏览器之间的冲突 1.2.3 标准的制定 1.3 JavaScript的实现 1.3.1 ECMAScript 1.3.2 DOM 1.3.3 BOM 1.3.4 新的开始 1.4 Web标准 1.4.1 ...
MySQL是世界上最受欢迎的关系型数据库管理系统之一,尤其在Web应用程序中广泛应用。MySQL 5.7.21.0是该系统的一个稳定版本,提供了许多增强功能和优化,旨在提高性能、安全性和可管理性。本安装包是专为Windows操作...
以下是对移动平均(Moving Average)、Savitzky-Golay滤波(SG滤波) 和 邻域平均滤波(Adjacent Averaging) 算法实现信号处理。移动平均 vs. 邻域平均:二者数学本质相同,均为窗口内均值计算。差异仅在于实现时的命名习惯(如“邻域平均”更强调局部邻域操作)。 SG滤波:基于最小二乘多项式拟合,通过保留高阶导数信息(如峰形曲率)实现高保真平滑。 选择移动平均/邻域平均: 实时性要求高(如传感器数据流处理)。 信号特征简单,无需保留高频细节(如温度趋势分析)。 对实时性要求高或噪声简单,可用移动平均。 选择SG滤波: 信号峰形关键(如FBG中心波长检测),优先选SG滤波。 光谱分析、色谱峰检测等需保留峰形特征的场景。 信号含复杂高频成分但需抑制随机噪声(如ECG信号去噪)。 边缘处理策略 镜像填充('symmetric'):减少边界突变,适合多数信号。 常数填充('constant'):适合信号首尾平稳的场景。 截断处理:输出数据变短,适合后续插值。
基于STM32F1系列FreeRTOS的移植使用 详细移植过程可以参考: FreeRTOS实战(二)章节:https://blog.csdn.net/manongdky/category_12968613.html?spm=1001.2014.3001.5482
内容概要:本文档详细介绍了如何使用MATLAB实现粒子群优化算法(PSO)优化极限学习机(ELM)进行时间序列预测的项目实例。项目背景指出,PSO通过模拟鸟群觅食行为进行全局优化,ELM则以其快速训练和强泛化能力著称,但对初始参数敏感。结合两者,PSO-ELM模型能显著提升时间序列预测的准确性。项目目标包括提高预测精度、降低训练时间、处理复杂非线性问题、增强模型稳定性和鲁棒性,并推动智能化预测技术的发展。面对数据质量问题、参数优化困难、计算资源消耗、模型过拟合及非线性特征等挑战,项目采取了数据预处理、PSO优化、并行计算、交叉验证等解决方案。项目特点在于高效的优化策略、快速的训练过程、强大的非线性拟合能力和广泛的适用性。; 适合人群:对时间序列预测感兴趣的研究人员、数据科学家以及有一定编程基础并希望深入了解机器学习优化算法的工程师。; 使用场景及目标:①金融市场预测,如股票走势预测;②气象预报,提高天气预测的准确性;③交通流量预测,优化交通管理;④能源需求预测,确保能源供应稳定;⑤医疗健康预测,辅助公共卫生决策。; 其他说明:文档提供了详细的模型架构描述和MATLAB代码示例,涵盖数据预处理、PSO优化、ELM训练及模型评估等关键步骤,帮助读者全面理解和实践PSO-ELM模型。
线描城市教学课件素材模板
文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 Vue 3是一款备受瞩目的JavaScript框架,它采用了基于Proxy的响应式系统,显著提升了性能和调试能力。其Composition API带来了更高效的逻辑组织方式,使代码复用变得轻而易举。Tree-shaking支持让打包后的文件体积更小,进一步优化了应用性能。Vue 3还与TypeScript深度集成,提供了更完善的类型推导,让开发过程更加顺畅。无论是构建大型应用还是小型项目,Vue 3都能凭借其出色的性能和灵活的架构,帮助开发者高效完成任务,是现代Web开发的理想选择。
手绘卡通汽球儿童教学课件素材模板
内容概要:本文深入探讨了COMSOL环境中圆偏振光与偏振转换技术的应用。首先介绍了圆偏振光的概念及其在多个科学和技术领域的重要意义,如光学仪器、量子计算和生物医学。接着阐述了偏振转换的原理及其广泛应用,特别是在光学仪器、通信和显示技术方面。最后,通过具体案例展示了如何利用COMSOL进行圆偏振斜入射的模拟与分析,包括建模、参数设定、模拟运行及结果解读,揭示了不同条件下偏振转换的效果。 适合人群:对光学仿真有兴趣的研究人员、工程师及高校学生。 使用场景及目标:①理解圆偏振光的基础理论;②掌握偏振转换的技术原理;③学会使用COMSOL进行相关仿真实验。 阅读建议:本文提供了详细的理论背景和实践指导,建议读者先熟悉基本概念再逐步深入到具体的模拟操作中,以便更好地掌握所学知识并在实践中加以运用。
内容概要:本文介绍了基于KOA-CNN-BiLSTM的深度学习模型在数据分类预测中的应用。该模型结合了卷积神经网络(CNN)和双向长短期记忆网络(BiLSTM),以高效提取空间和时序特征。为了解决传统CNN和LSTM的局限性,项目引入了Kepler算法进行参数优化,提升了模型的收敛速度和预测精度。项目通过优化模型结构、采用数据增强与正则化技术、引入Kepler算法解决了模型训练复杂度高、过拟合和参数优化困难等问题。文中还展示了模型的具体架构及其在多个领域的应用潜力,并提供了详细的代码示例。 适合人群:具备一定机器学习和深度学习基础的研发人员,尤其是对CNN、LSTM及优化算法感兴趣的从业者和研究人员。 使用场景及目标:① 提升数据分类与预测任务的准确率和效率;② 应用于金融、医疗、自然语言处理、物流与交通、环境监测等领域;③ 掌握结合CNN和BiLSTM的多模态特征提取方法;④ 学习Kepler算法在深度学习模型中的应用。 阅读建议:读者应具备一定的深度学习基础,重点理解CNN与BiLSTM的结合方式及Kepler算法的作用机制。建议结合代码示例进行实践,以便更好地掌握模型的设计与实现。
该代码提供了一个完整的二维卡尔曼滤波实现,涵盖了从初始化、状态更新到结果可视化的全过程。适合用于学习卡尔曼滤波的基本原理和实际应用。
内容概要:文章深入剖析了Hadoop数据倾斜的原因及解决方案。数据倾斜主要源于数据分布不均衡、Key的Hash分布不均、业务特性或操作设计问题以及输入文件特性四个方面。针对这些问题,文中提出了涵盖预处理、Map、Shuffle、Reduce阶段及特定场景的多种优化措施。 适用人群:从事大数据开发、运维的技术人员,尤其是对Hadoop有一定了解并遇到数据倾斜问题的工程师; 使用场景及目标:①帮助技术人员识别数据倾斜现象,如任务进度停滞、节点OOM等;②提供从预处理到任务执行各阶段的优化策略,以解决数据倾斜带来的性能瓶颈; 其他说明:数据倾斜是Hadoop集群中常见的性能问题,解决它需要综合考虑数据特征、业务逻辑及系统配置,文章提供的方案具有较强的实用性和指导意义,建议读者根据实际情况选择合适的优化手段。
N-甲基吡咯烷酮(NMP)是一种具有高极性、高沸点、低粘度、低挥发性、高热稳定性和化学稳定性的非质子溶剂。作为高性能溶剂,其广泛应用于锂离子电池制造、化工生产等多个领域。 NMP原料来源可分为合成NMP与再生NMP两类。合成NMP指通过化学合成工艺制得的NMP产品,其工业生产路线以γ-丁内酯(GBL)与单甲基胺为原料经缩合反应生成。再生NMP则指对使用后的NMP废液进行回收提纯 NMP废液特性: 高浓度NMP:废液中NMP含量较高,因NMP强溶解性可能混合多种有机物及无机物 低毒性但具刺激性:虽较其他有机溶剂毒性低,但高浓度接触仍对人体皮肤及眼睛产生刺激 处理难度大:因高沸点与强溶解性,单纯物理蒸发或自然挥发难以处理,需采用特定回收净化技术 严格环保要求:尤其在电池制造领域,NMP纯度要求极高,再生处理后的NMP纯度须达到同等标准,否则将影响产品质量与环境安全 NMP回收模式: 委托加工模式:回收企业为客户提供闭环循环服务,直接回收客户废液并提纯后返还。该模式可降低客户处理成本,实现资源循环利用 购销模式:回收企业采购上游供应商的NMP废液,经处理提纯后销售给下游客户,通过购销差价盈利 内部循环模式:大型企业集团自建回收处理设施,实现废液中NMP的内部循环利用。例如三菱重工在国内外建有溶剂回收装置,特别是随着全球锂电池需求增长,其海外工厂陆续采用现场回收设备,无需第三方处理即可实现NMP的直接回收提纯。 据QYResearch调研团队最新报告“全球NMP回收服务市场报告2025-2031”显示,预计2031年全球NMP回收服务市场规模将达到106万吨,未来几年年复合增长率CAGR为10.0%。
QGraphics绘制圆盘不同坐标位置的厚度值,含缩放实现
前段时间花钱买的小程序源码 感觉太单调了 全开源版本小程序 这个小程序是云开发的不需要服务器域名 支持流量主wx支付。超级能吸引年轻人的一款小程序 版本新增: 1.Ui美化 2.星座匹配(通过星座进行盲盒) 3.后台管理(可以实时看到用户数量) 4.支付S I P 9功能(后台可以设置支付金额) 5.骗审核模式(可以快速帮助大家通过小程序审核实现上线) 企业小程序可以对接wx支付,非企业小程序只能流量主。 搭建出来一直放那界面单调 就不想运营了 放在那也没啥用 拿出来分享一下吧
文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 Vue 3是一款备受瞩目的JavaScript框架,它采用了基于Proxy的响应式系统,显著提升了性能和调试能力。其Composition API带来了更高效的逻辑组织方式,使代码复用变得轻而易举。Tree-shaking支持让打包后的文件体积更小,进一步优化了应用性能。Vue 3还与TypeScript深度集成,提供了更完善的类型推导,让开发过程更加顺畅。无论是构建大型应用还是小型项目,Vue 3都能凭借其出色的性能和灵活的架构,帮助开发者高效完成任务,是现代Web开发的理想选择。
文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 Vue 3是一款备受瞩目的JavaScript框架,它采用了基于Proxy的响应式系统,显著提升了性能和调试能力。其Composition API带来了更高效的逻辑组织方式,使代码复用变得轻而易举。Tree-shaking支持让打包后的文件体积更小,进一步优化了应用性能。Vue 3还与TypeScript深度集成,提供了更完善的类型推导,让开发过程更加顺畅。无论是构建大型应用还是小型项目,Vue 3都能凭借其出色的性能和灵活的架构,帮助开发者高效完成任务,是现代Web开发的理想选择。
内容概要:本文档详细介绍了使用Visio绘制ER图的方法,首先阐述了ER图的三个基本要素:实体、属性、关系,并解释了Visio中没有现成模板的问题以及解决方案,即通过自定义模具的方式添加所需的图形元素。接着描述了绘制ER图的两种主要方式:手动绘制和利用Visio的反向工程技术。对于手动绘制,文中以留言板数据库为例,具体演示了从创建实体、设置属性到建立实体间关系的全过程。而对于反向工程,则强调了其高效性,支持多种数据库类型,如Access、MSSQL、Excel等,并给出了详细的步骤说明,包括设置反向工程参数、选择数据库路径、指定生成的表等关键环节。 适合人群:适合有一定数据库基础知识,尤其是正在学习或从事数据库设计工作的人员,包括但不限于数据库管理员、软件开发者、系统分析师等。 使用场景及目标:①帮助用户掌握Visio绘制ER图的基本技能,能够独立完成简单数据库的ER图设计;②利用Visio的反向工程功能快速生成复杂数据库的ER图,提高工作效率;③理解实体、属性、关系三者之间的逻辑关联,为后续数据库设计提供理论依据。 阅读建议:建议读者按照文档中的步骤逐步操作练习,同时结合实际项目需求,灵活运用所学知识,特别是对于反向工程部分,可以尝试不同类型的数据库以加深理解。
QC方法在提高箭载仪器支架装配合格率上的应用研究.zip