<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Wincy H</title>
    <description>The latest articles on DEV Community by Wincy H (@wincyysh).</description>
    <link>https://dev.to/wincyysh</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3518563%2F82a4dbcf-9739-4a42-9da4-1a16c61d2333.png</url>
      <title>DEV Community: Wincy H</title>
      <link>https://dev.to/wincyysh</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/wincyysh"/>
    <language>en</language>
    <item>
      <title>Leetcode 39 Combination Sum</title>
      <dc:creator>Wincy H</dc:creator>
      <pubDate>Wed, 17 Dec 2025 16:40:09 +0000</pubDate>
      <link>https://dev.to/wincyysh/leetcode-39-combination-sum-4o4k</link>
      <guid>https://dev.to/wincyysh/leetcode-39-combination-sum-4o4k</guid>
      <description>&lt;p&gt;Let's read the problem together:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Given an array of distinct integers candidates and a target integer target, return a list of &lt;strong&gt;all unique combinations&lt;/strong&gt; of candidates where the chosen numbers sum to target. You may &lt;strong&gt;return the combinations in any order&lt;/strong&gt;. &lt;br&gt;
The &lt;strong&gt;same number&lt;/strong&gt; may be chosen from candidates &lt;strong&gt;an unlimited number of times&lt;/strong&gt;. Two combinations are unique if the frequency of at least one of the chosen numbers is different.&lt;br&gt;
The test cases are generated such that the number of unique combinations that sum up to target is less than 150 combinations for the given input.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The bold content gives hints and guidelines to code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Highlights:&lt;/strong&gt; &lt;br&gt;
Find unique combinations not find permutations (all possible sequences)&lt;br&gt;
&lt;code&gt;[2,3,3] = [3,2,3] = [3,3,2]&lt;/code&gt; all three lists count as one same unique list&lt;/p&gt;

&lt;p&gt;We are going to use Example 2 to demonstrate the logic (why we choose Example 2: not to complex but include all logic):&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Input: candidates = [2,3,5], target = 8&lt;br&gt;
Output: [[2,2,2,2],[2,3,3],[3,5]]&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Math behind the problem:&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;2x + 3y + 5z = 8&lt;/code&gt;&lt;br&gt;
x, y, z represents the frequency&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;class Solution:
    def combinationSum&lt;span class="o"&gt;(&lt;/span&gt;self, candidates, target&lt;span class="o"&gt;)&lt;/span&gt;:
        results &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;[]&lt;/span&gt;
        def backtrack&lt;span class="o"&gt;(&lt;/span&gt;remain, comb, start&lt;span class="o"&gt;)&lt;/span&gt;:
            &lt;span class="k"&gt;if &lt;/span&gt;remain &lt;span class="o"&gt;==&lt;/span&gt; 0:
                results.append&lt;span class="o"&gt;(&lt;/span&gt;list&lt;span class="o"&gt;(&lt;/span&gt;comb&lt;span class="o"&gt;))&lt;/span&gt;
                &lt;span class="k"&gt;return
            elif &lt;/span&gt;remain &amp;lt; 0:
                &lt;span class="k"&gt;return
            for &lt;/span&gt;i &lt;span class="k"&gt;in &lt;/span&gt;range&lt;span class="o"&gt;(&lt;/span&gt;start, len&lt;span class="o"&gt;(&lt;/span&gt;candidates&lt;span class="o"&gt;))&lt;/span&gt;:
                comb.append&lt;span class="o"&gt;(&lt;/span&gt;candidates[i]&lt;span class="o"&gt;)&lt;/span&gt;
                backtrack&lt;span class="o"&gt;(&lt;/span&gt;remain - candidates[i], comb, i&lt;span class="o"&gt;)&lt;/span&gt;
                comb.pop&lt;span class="o"&gt;()&lt;/span&gt;
        backtrack&lt;span class="o"&gt;(&lt;/span&gt;target, &lt;span class="o"&gt;[]&lt;/span&gt;, 0&lt;span class="o"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;return &lt;/span&gt;results
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Pitfalls:&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;"Gotchas":&lt;/em&gt;&lt;br&gt;
It happens because of how Python handles references versus copies.&lt;br&gt;
&lt;code&gt;results.append(comb)&lt;/code&gt; receive empty list&lt;br&gt;
&lt;em&gt;How to fix it:&lt;/em&gt;&lt;br&gt;
&lt;code&gt;results.append(list(comb))&lt;/code&gt; receive shallow copy&lt;br&gt;
&lt;em&gt;"Gotchas":&lt;/em&gt;&lt;br&gt;
Find all possible sequences&lt;br&gt;
&lt;code&gt;for i in range(len(candidates)):&lt;/code&gt;&lt;br&gt;
&lt;em&gt;How to fix it:&lt;/em&gt;&lt;br&gt;
Find unique combinations&lt;br&gt;
&lt;code&gt;for i in range(start, len(candidates)):&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DFS (Depth-First-Search):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;root &lt;span class="o"&gt;(&lt;/span&gt;target: 8&lt;span class="o"&gt;)&lt;/span&gt;
└── &lt;span class="o"&gt;[&lt;/span&gt;i:0, v:2] remain: 6, start: 0
   ├── &lt;span class="o"&gt;[&lt;/span&gt;i:0, v:2] remain: 4, start: 0
   │   ├── &lt;span class="o"&gt;[&lt;/span&gt;i:0, v:2] remain: 2, start: 0
   │   │   ├── &lt;span class="o"&gt;[&lt;/span&gt;i:0, v:2] remain: 0, start: 0 ──  Success: &lt;span class="o"&gt;[&lt;/span&gt;2, 2, 2, 2]
   │   │   ├── &lt;span class="o"&gt;[&lt;/span&gt;i:1, v:3] remain: &lt;span class="nt"&gt;-1&lt;/span&gt;, start: 1 ──  Fail &lt;span class="o"&gt;(&amp;gt;&lt;/span&gt;target&lt;span class="o"&gt;)&lt;/span&gt;
   │   │   └── &lt;span class="o"&gt;[&lt;/span&gt;i:2, v:5] remain: &lt;span class="nt"&gt;-3&lt;/span&gt;, start: 2 ──  Fail &lt;span class="o"&gt;(&amp;gt;&lt;/span&gt;target&lt;span class="o"&gt;)&lt;/span&gt;
   │   ├── &lt;span class="o"&gt;[&lt;/span&gt;i:1, v:3] remain: 1, start: 1
   │   │   ├── &lt;span class="o"&gt;[&lt;/span&gt;i:1, v:3] remain: &lt;span class="nt"&gt;-2&lt;/span&gt;, start: 1 ──  Fail &lt;span class="o"&gt;(&amp;gt;&lt;/span&gt;target&lt;span class="o"&gt;)&lt;/span&gt;
   │   │   └── &lt;span class="o"&gt;[&lt;/span&gt;i:2, v:5] remain: &lt;span class="nt"&gt;-4&lt;/span&gt;, start: 2 ──  Fail &lt;span class="o"&gt;(&amp;gt;&lt;/span&gt;target&lt;span class="o"&gt;)&lt;/span&gt;
   │   └── &lt;span class="o"&gt;[&lt;/span&gt;i:2, v:5] remain: &lt;span class="nt"&gt;-1&lt;/span&gt;, start: 2 ──  Fail &lt;span class="o"&gt;(&amp;gt;&lt;/span&gt;target&lt;span class="o"&gt;)&lt;/span&gt;
   ├── &lt;span class="o"&gt;[&lt;/span&gt;i:1, v:3] remain: 3, start: 1
   │   ├── &lt;span class="o"&gt;[&lt;/span&gt;i:1, v:3] remain: 0, start: 1 ──  Success: &lt;span class="o"&gt;[&lt;/span&gt;2, 3, 3]
   │   └── &lt;span class="o"&gt;[&lt;/span&gt;i:2, v:5] remain: &lt;span class="nt"&gt;-2&lt;/span&gt;, start: 2 ──  Fail &lt;span class="o"&gt;(&amp;gt;&lt;/span&gt;target&lt;span class="o"&gt;)&lt;/span&gt;
   └── &lt;span class="o"&gt;[&lt;/span&gt;i:2, v:5] remain: 1, start: 2
       └── &lt;span class="o"&gt;[&lt;/span&gt;i:2, v:5] remain: &lt;span class="nt"&gt;-4&lt;/span&gt;, start: 2 ──  Fail &lt;span class="o"&gt;(&amp;gt;&lt;/span&gt;target&lt;span class="o"&gt;)&lt;/span&gt;
└── &lt;span class="o"&gt;[&lt;/span&gt;i:1, v:3] remain: 5, start: 1
   ├── &lt;span class="o"&gt;[&lt;/span&gt;i:1, v:3] remain: 2, start: 1
   │   ├── &lt;span class="o"&gt;[&lt;/span&gt;i:1, v:3] remain: &lt;span class="nt"&gt;-1&lt;/span&gt;, start: 1 ──  Fail &lt;span class="o"&gt;(&amp;gt;&lt;/span&gt;target&lt;span class="o"&gt;)&lt;/span&gt;
   │   └── &lt;span class="o"&gt;[&lt;/span&gt;i:2, v:5] remain: &lt;span class="nt"&gt;-3&lt;/span&gt;, start: 2 ──  Fail &lt;span class="o"&gt;(&amp;gt;&lt;/span&gt;target&lt;span class="o"&gt;)&lt;/span&gt;
   └── &lt;span class="o"&gt;[&lt;/span&gt;i:2, v:5] remain: 0, start: 2 ──  Success: &lt;span class="o"&gt;[&lt;/span&gt;3, 5]
└── &lt;span class="o"&gt;[&lt;/span&gt;i:2, v:5] remain: 3, start: 2
   └── &lt;span class="o"&gt;[&lt;/span&gt;i:2, v:5] remain: &lt;span class="nt"&gt;-2&lt;/span&gt;, start: 2 ──  Fail &lt;span class="o"&gt;(&amp;gt;&lt;/span&gt;target&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Reference Table:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Current Path&lt;/th&gt;
&lt;th&gt;Remain&lt;/th&gt;
&lt;th&gt;Start&lt;/th&gt;
&lt;th&gt;i (Index)&lt;/th&gt;
&lt;th&gt;Candidates[i]&lt;/th&gt;
&lt;th&gt;Result&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;[2]&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Continue&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[2, 2]&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Continue&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[2, 2, 2]&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Continue&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[2, 2, 2, 2]&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Success (8)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[2, 2, 2, 3]&lt;/td&gt;
&lt;td&gt;-1&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Fail (&amp;gt;target)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[2, 2, 2, 5]&lt;/td&gt;
&lt;td&gt;-3&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Fail (&amp;gt;target)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[2, 2, 3]&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Continue&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[2, 2, 3, 3]&lt;/td&gt;
&lt;td&gt;-2&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Fail (&amp;gt;target)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[2, 2, 3, 5]&lt;/td&gt;
&lt;td&gt;-4&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Fail (&amp;gt;target)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[2, 2, 5]&lt;/td&gt;
&lt;td&gt;-1&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Fail (&amp;gt;target)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[2, 3]&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Continue&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[2, 3, 3]&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Success (8)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[2, 3, 5]&lt;/td&gt;
&lt;td&gt;-2&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Fail (&amp;gt;target)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[2, 5]&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Continue&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[2, 5, 5]&lt;/td&gt;
&lt;td&gt;-4&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Fail (&amp;gt;target)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[3]&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Continue&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[3, 3]&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Continue&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[3, 3, 3]&lt;/td&gt;
&lt;td&gt;-1&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Fail (&amp;gt;target)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[3, 3, 5]&lt;/td&gt;
&lt;td&gt;-3&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Fail (&amp;gt;target)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[3, 5]&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Success (8)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[5]&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Continue&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[5, 5]&lt;/td&gt;
&lt;td&gt;-2&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Fail (&amp;gt;target)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
      <category>leetcode</category>
      <category>programming</category>
      <category>python</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>what are primitive values and common data type?</title>
      <dc:creator>Wincy H</dc:creator>
      <pubDate>Thu, 23 Oct 2025 21:25:03 +0000</pubDate>
      <link>https://dev.to/wincyysh/what-are-primitive-values-and-common-data-type-1k22</link>
      <guid>https://dev.to/wincyysh/what-are-primitive-values-and-common-data-type-1k22</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;All types except Object define immutable values represented directly at the lowest level of the language. We refer to values of these types as primitive values.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Every primitive value except Object can be changed to any built in type, after initial assigned.&lt;/p&gt;

&lt;p&gt;Primitive values table:&lt;/p&gt;

&lt;blockquote&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;typeof return value&lt;/th&gt;
&lt;th&gt;Object wrapper&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Null&lt;/td&gt;
&lt;td&gt;"object"&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Undefined&lt;/td&gt;
&lt;td&gt;"undefined"&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Boolean&lt;/td&gt;
&lt;td&gt;"boolean"&lt;/td&gt;
&lt;td&gt;Boolean&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Number&lt;/td&gt;
&lt;td&gt;"number"&lt;/td&gt;
&lt;td&gt;Number&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BigInt&lt;/td&gt;
&lt;td&gt;"bigint"&lt;/td&gt;
&lt;td&gt;BigInt&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;String&lt;/td&gt;
&lt;td&gt;"string"&lt;/td&gt;
&lt;td&gt;String&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Symbol&lt;/td&gt;
&lt;td&gt;"symbol"&lt;/td&gt;
&lt;td&gt;Symbol&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;


&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Initial a var and immutable values later
var a;
// "undefined"
typeof a;                      
typeof a === "undefined";      // true

// boolean
a = true;
typeof a === "boolean";        // true

// number
a = 100;                       
typeof a === "number";         // true

// Bigint
a = 100n;
typeof a === "bigint";         // true

// String
a = "100";
typeof a === "string";         // true

// Symbols
typeof Symbol() === "symbol";
typeof Symbol("foo") === "symbol";
typeof Symbol.iterator === "symbol";

// Object is not immutable, but can contain all primitive values type
// Object can be accessed with doted notation or bracket notation
var Obj = {
   // properties a, b, c
   a: 1,              // typeof Obj["a"] === "number"
   b: "hello world",  // typeof Obj["b"] === "string"
   c: true,           // typeof Obj["c"] === "boolean"
   d: { e: 1n }       // typeof Obj.d === "object" 
                      // typeof Obj.d.e === "bigint"
}

// array is typeof Object with numrically indexed positions
var arr = [
   1,                // typeof arr[0] === "number"
   "hello world",    // typeof arr[1] === "string"
   true,             // typeof arr[2] === "boolean"
   {e: 1n}           // typeof arr[3] === "object" 
                     // typeof arr[3]["e"] === "bigint"
]

// null is special in typeof please refer to two documentations for detail
a = null;                      
typeof a === null;             // true
typeof null === "object";      // true

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Reference:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Data_structures" rel="noopener noreferrer"&gt;JavaScript data types and data structures&lt;/a&gt;&lt;br&gt;
&lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof" rel="noopener noreferrer"&gt;Javascript typeof&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>typeof</category>
      <category>readdocumentation</category>
      <category>primitivevalues</category>
    </item>
  </channel>
</rss>
