<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>数据类型 on Last Stand</title><link>https://amatsuzero.github.io/LastStand/tags/%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B/</link><description>Recent content in 数据类型 on Last Stand</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Wed, 16 Jul 2025 00:00:00 +0800</lastBuildDate><atom:link href="https://amatsuzero.github.io/LastStand/tags/%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B/index.xml" rel="self" type="application/rss+xml"/><item><title>数据类型</title><link>https://amatsuzero.github.io/LastStand/posts/frontend/javascript/javascript-001/</link><pubDate>Tue, 01 Oct 2024 00:00:00 +0800</pubDate><guid>https://amatsuzero.github.io/LastStand/posts/frontend/javascript/javascript-001/</guid><description>&lt;h2 id="前言"&gt;前言&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;请讲下 &lt;code&gt;JavaScript&lt;/code&gt; 中的数据类型？&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;前端面试中，估计大家都被这么问过。&lt;/p&gt;
&lt;p&gt;答：&lt;code&gt;Javascript&lt;/code&gt; 中的数据类型包括原始类型和引用类型。其中原始类型包括 &lt;code&gt;Null&lt;/code&gt;、&lt;code&gt;Undefined&lt;/code&gt;、&lt;code&gt;Boolean&lt;/code&gt;、&lt;code&gt;String&lt;/code&gt;、&lt;code&gt;Symbol&lt;/code&gt;、&lt;code&gt;BigInt&lt;/code&gt;。引用类型指的是 &lt;code&gt;Object&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;没错，我也是这么回答的，只是这通常是第一个问题，由这个问题可以引出很多很多的问题，比如&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Null&lt;/code&gt; 和 &lt;code&gt;Undefined&lt;/code&gt; 有什么区别？前端的判空有哪些需要注意的？&lt;/li&gt;
&lt;li&gt;&lt;code&gt;typeof null&lt;/code&gt; 为什么是 &lt;code&gt;object&lt;/code&gt;?&lt;/li&gt;
&lt;li&gt;为什么 &lt;code&gt;ES6&lt;/code&gt; 要提出 &lt;code&gt;Symbol&lt;/code&gt;？&lt;/li&gt;
&lt;li&gt;&lt;code&gt;BigInt&lt;/code&gt; 解决了什么问题？&lt;/li&gt;
&lt;li&gt;为什么 &lt;code&gt;0.1 + 0.2 !== 0.3?&lt;/code&gt; 你如何解决这个问题？&lt;/li&gt;
&lt;li&gt;如何判断一个值是数组？&lt;/li&gt;
&lt;li&gt;&amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="弱类型语言"&gt;弱类型语言&lt;/h2&gt;
&lt;p&gt;因为 &lt;code&gt;JavaScript&lt;/code&gt; 是弱类型语言或者说是动态语言。这意味着你不需要提前声明变量的类型，在程序运行的过程中，类型会被自动确定，也就是说你可以使用同一个变量保存不同类型的值&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-javascript" data-lang="javascript"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;var&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;foo&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;42&lt;/span&gt;; &lt;span style="color:#75715e"&gt;// foo is a Number now
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;foo&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;bar&amp;#34;&lt;/span&gt;; &lt;span style="color:#75715e"&gt;// foo is a String now
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;foo&lt;/span&gt; &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;true&lt;/span&gt;; &lt;span style="color:#75715e"&gt;// foo is a Boolean now
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这一特性给我们带来便利的同时，也给我们带来了很多的类型错误。试想一下，假如 &lt;code&gt;JS&lt;/code&gt; 说是强类型语言，那么各个类型之间没法转换，也就有了一层隔阂或者说一层保护，会不会更加好维护呢？——这或许就是 &lt;code&gt;TypeScript&lt;/code&gt; 诞生的原因。&lt;/p&gt;
&lt;p&gt;对 &lt;code&gt;JavaScript&lt;/code&gt; 的数据类型掌握，是一个前端最基本的知识点&lt;/p&gt;
&lt;h2 id="null-还是-undefined"&gt;null 还是 undefined&lt;/h2&gt;
&lt;h3 id="定义"&gt;定义&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;undefined&lt;/code&gt; 表示未定义的变量。&lt;code&gt;null&lt;/code&gt; 值表示一个空对象指针。&lt;/p&gt;</description></item></channel></rss>