一、关于类型
什么叫做类型简单地说类型就是把内存中的一个二进制序列赋予某种意义。比如二进制序列0100 0000 0111 0000 0001 0101 0100 1011 1100 0110 1010 0111 1110 1111 1001 1110如果看作是64位无符号整数类型就是4643234631018606494 而按照IEEE 754规定的浮点数二进制表示规则见附1双精度浮点类型则是257.331。变量类型大部分计算机语言使用变量来存储和表示数据,一些语言会给变量规定一个类型,在整个程序中(不论是编译时还是运行时),这个类型都不能被改变。与此相对JavaScript和一些其它语言的变量可以存储任何类型它们使用无类型的变量。变量类型是否存在是跟语法无关的例如C#中也提供了var类型的变量但是下面的语句在C#中会出错var a1;a”string”;原因是C#的var关键字只是省略了变量类型声明而根据初始化表达式自动推断变量类型所以C#的var变量仍然是有类型的。而JavaScript中任何时刻你都可以把任何值赋值给特定变量所以JavaScript变量是无类型的。强类型和弱类型按照计算机语言的类型系统的设计方式,可以分为强类型和弱类型两种。二者之间的区别就在于计算时是否可以不同类型之间对使用者透明地隐式转换。从使用者的角度来看如果一个语言可以隐式转换它的所有类型那么它的变量、表达式等在参与运算时即使类型不正确也能通过隐式转换来得到正确地类型这对使用者而言就好像所有类型都能进行所有运算一样所以这样的语言被称作弱类型。与此相对强类型语言的类型之间不一定有隐式转换比如C是一门强类型语言但C中double和int可以互相转换但double和任何类型的指针之间都需要强制转换为什么要有类型类型可以帮助程序员编写正确的程序它在实际编写程序的过程中体现为一种约束。一般规律是约束越强越不容易出错但编写程序时也越麻烦。变量有类型的强类型语言约束最强典型代表是C变量无类型的弱类型语言约束最弱典型代表是JavaScript。在JavaScript中因为约束比较弱所以容易出现这种错误var a 200;var b 1;var c a b;你可能期望c是201但实际上它是2001这个错误在强类型语言中决不会出现。然而正是因为JavaScript没有这些约束所以可以很方便地拼接数字和字符串类型。所以约束和灵活性对语言的设计者而言永远是需要平衡的一组特性。静态类型和动态类型类型是一种约束这种约束是通过类型检查来发生作用的。在不同语言中类型检查在不同的阶段发生作用,这样又可以分为编译时检查和运行时检查。对于JavaScript这样的解释型语言也有跟编译过程比较相似的阶段即词法分析和语法分析解释型语言的类型检查若在语法分析或者之前的阶段完成也可以认为类似于编译时检查。所以更合理的说法是静态类型检查和动态类型检查。有趣的是很多语言虽然编译时检查类型但是它的类型信息仍可以在运行时获得如C#中使用元数据来保存类型信息在运行阶段使用者可以通过反射来获取和使用类型的信息。JavaScript在设计的各个方面都以灵活性优先所以它使用动态类型检查并且除了在进行极少数特定操作时JavaScript不会主动检查类型。你可以在运行时获得任何一个变量或者表达式的类型信息并且通过程序逻辑检查它的正确性。二、JavaScript标准规定的类型JavaScript标准中规定了9种类型:Undefined Null Boolean String Number Object Reference List Completion其中Reference List Completion三种类型仅供语言解析运行时使用无法从程序中直接访问这里就暂不做介绍。下面我们可以了解下这六种类型Undefined类型Undefined类型只有一个值undefined它是变量未被赋值时的值在JS中全局对象有一个undefined属性表示undefined事实上undefined并非JavaScript的关键字可以给全局的undefined属性赋值来改变它的值。Null类型Null类型也只有一个值null,但是JavaScript为它提供了一个关键字null来表示这个唯一的值。Null类型的语义是“一个空的对象引用”。Boolean类型Boolean有两种取值true和falseString类型String类型的的正式解释是一个16位无符号整数类型的序列它实际上用来表示以UTF-16编码的文本信息。Number类型JavaScript的Number共有18437736874454810627 (就是 264-253 3)个值。JavaScript的Number以双精度浮点类型存储除了9007199254740990表示NaN它遵守IEEE 754见附1规定占用64位8字节。Object类型JavaScript中最为复杂的类型就是Object它是一系列属性的无序集合Function是实现了私有属性[[call]]的ObjectJavaScript的宿主也可以提供一些特别的对象。三、JavaScript使用者眼中的类型前面讲了JS标准中规定的类型然而一个不能忽略的问题是JS标准是写给JS实现者看的对JS使用者而言类型并不一定要按照标准来定义比如因为JS在进行.运算的时候会自动把非Object类型转换为与其对应的对象所以str.length其实和(new String(str)).length是等效的从这个角度而言认为二者属于同一类型也未尝不可。我们利用JS中的一些语言特性,可以进行运行时的类型判别,但是这些方法判断的结果各不相同,孰好孰坏还需要您自己决定。typeof——看上去很官方

相关新闻

深度学习张量广播机制:原理、规则与高效代码实践

深度学习张量广播机制:原理、规则与高效代码实践

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 这次我们来看一个在深度学习框架中至关重要的基础概念:张量运算和广播。对于任何使用 PyTorch、TensorFlow 或 NumPy 进行…

2026/7/6 3:59:21阅读更多 →
STM32H750VBT6中ADCINP与INN什么区别

STM32H750VBT6中ADCINP与INN什么区别

在 STM32H750VBT6 的高级 ADC 架构中,每个物理采样通道的引脚名称经常会出现 INP(正输入)和 INN(负输入)。 它们的核心区别在于:STM32H7 的 ADC 支持“差分输入(Differential)”和“…

2026/7/6 3:59:21阅读更多 →
商用轨道插座怎么选更划算 各品牌性价比盘点帮你避坑少花冤枉钱

商用轨道插座怎么选更划算 各品牌性价比盘点帮你避坑少花冤枉钱

开过咖啡店、装过联合办公、做过商业展厅的朋友都懂,配电布局绝对是装修前期最容易踩的坑:插座布少了,后期加设备要拖插排乱不说,还容易过载跳闸;布多了,闲置的插座丑还浪费钱,换个业态还要砸墙…

2026/7/6 3:54:20阅读更多 →
安卓修改大师反编译全攻略:从命令行到图形化的一站式APK定制...

安卓修改大师反编译全攻略:从命令行到图形化的一站式APK定制...

安卓修改大师反编译全攻略:从命令行到图形化的一站式APK定制神器 简介 安卓APK反编译曾是开发者和逆向工程师的专属技能,需要掌握apktool、dex2jar、jd-gui、IDA等多款命令行工具的组合使用,环境配置繁琐且操作复杂。本文将基于传统反编译工具…

2026/7/6 5:09:25阅读更多 →
MatAnyone终极指南:基于一致性记忆传播的稳定视频抠像框架

MatAnyone终极指南:基于一致性记忆传播的稳定视频抠像框架

MatAnyone终极指南:基于一致性记忆传播的稳定视频抠像框架 【免费下载链接】MatAnyone [CVPR 2025] MatAnyone: Stable Video Matting with Consistent Memory Propagation 项目地址: https://gitcode.com/gh_mirrors/ma/MatAnyone 想要制作专业视频却苦于没…

2026/7/6 5:09:25阅读更多 →
从零搭建SpringBoot微服务完整教程

从零搭建SpringBoot微服务完整教程

我从命令行里敲下mvn archetype:generate的那一刻,一个崭新的项目骨架在本地磁盘上徐徐展开。这不仅仅是Spring Boot的启动,更是一次关于“能力边界”的重新定义。从零搭建一个微服务,意味着你要在混沌中建立秩序,在空白处绘制蓝图…

2026/7/6 5:09:25阅读更多 →
毕设分享 深度学习手写数字识别系统(源码+论文)

毕设分享 深度学习手写数字识别系统(源码+论文)

文章目录 0 前言1 项目运行效果2 深度学习手写字符识别原理2.1 结构解析2.2 C1层2.3 S2层S2层和C3层连接 2.4 F6与C5层 3 写数字识别算法模型的构建3.1 输入层设计3.2 激活函数的选取3.3 卷积层设计3.4 降采样层3.5 输出层设计 4 网络模型的总体结构5 部分实现代码6 最后 0 前言…

2026/7/6 5:09:25阅读更多 →
高速PCB信号完整性设计:从100MHz到GHz的5个关键阻抗控制实战

高速PCB信号完整性设计:从100MHz到GHz的5个关键阻抗控制实战

高速PCB信号完整性设计:从100MHz到GHz的5个关键阻抗控制实战 随着数字电路速度的不断提升,信号完整性(SI)问题已成为高速PCB设计中最具挑战性的环节之一。当信号频率超过100MHz时,传输线效应、阻抗不连续和电磁干扰等问题会显著影响系统性能。…

2026/7/6 5:09:25阅读更多 →
线性回归模型选择:R² 与 Adjusted R² 的3个关键差异与5个实战应用场景

线性回归模型选择:R² 与 Adjusted R² 的3个关键差异与5个实战应用场景

线性回归模型选择:R 与 Adjusted R 的3个关键差异与5个实战应用场景在数据分析的世界里,线性回归模型就像一把瑞士军刀,简单却功能强大。但当我们面对多个预测变量时,如何判断哪个模型才是"最佳"选择?这时&a…

2026/7/6 5:04:25阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/6 4:26:20阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/6 2:48:33阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/6 0:10:35阅读更多 →
Seraphine:基于LCU API的英雄联盟智能游戏助手技术解析与应用指南

Seraphine:基于LCU API的英雄联盟智能游戏助手技术解析与应用指南

Seraphine:基于LCU API的英雄联盟智能游戏助手技术解析与应用指南 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 技术架构先行:官方接口的合规应用 你是否曾在BP阶段手忙脚乱&#x…

2026/7/6 0:03:39阅读更多 →
多协议远程连接管理工具mRemoteNG:告别混乱,统一你的远程桌面管理

多协议远程连接管理工具mRemoteNG:告别混乱,统一你的远程桌面管理

多协议远程连接管理工具mRemoteNG:告别混乱,统一你的远程桌面管理 【免费下载链接】mRemoteNG mRemoteNG is the next generation of mRemote, open source, tabbed, multi-protocol, remote connections manager. 项目地址: https://gitcode.com/gh_m…

2026/7/6 0:03:39阅读更多 →
COUNT(DISTINCT) 与 GROUP BY 去重统计:5 亿数据量下的性能实测与选型指南

COUNT(DISTINCT) 与 GROUP BY 去重统计:5 亿数据量下的性能实测与选型指南

COUNT(DISTINCT) 与 GROUP BY 去重统计:5 亿数据量下的性能实测与选型指南在数据分析和处理领域,去重统计是最基础也是最频繁使用的操作之一。当数据量达到亿级规模时,不同的去重统计方法在性能上可能产生天壤之别。本文将基于 5 亿行数据的实…

2026/7/6 0:03:39阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/6 4:45:01阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/6 4:45:01阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/6 4:45:03阅读更多 →