<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>aow</title>
        <link>https://paragraph.com/@ashonthewall</link>
        <description>Success &amp; $$$ don't impress me, kindness &amp; humility do.</description>
        <lastBuildDate>Tue, 14 Apr 2026 10:56:11 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <image>
            <title>aow</title>
            <url>https://storage.googleapis.com/papyrus_images/52a6a3fb818bf8d86f1b6a52cb2822721d472d147f933a2bc34216e7fbc37e14.jpg</url>
            <link>https://paragraph.com/@ashonthewall</link>
        </image>
        <copyright>All rights reserved</copyright>
        <item>
            <title><![CDATA[JavaScript 入门 Day 7]]></title>
            <link>https://paragraph.com/@ashonthewall/javascript-day-7</link>
            <guid>2jzSAyH8Qy3yzfjlveMN</guid>
            <pubDate>Wed, 23 Mar 2022 07:58:31 GMT</pubDate>
            <description><![CDATA[JS基础的最后一课！ Iterate with JavaScript While Loops loop是所有语言里都非常重要好用的一个概念，先来了解while loop。const ourArray = []; let i = 0; while (i &#x3C; 5) { ourArray.push(i); i++; } 计算机会反复执行然后回去验证直到while后面的条件不再满足。 比如上面的代码就是从0到4添加到array中。 如果要倒序添加呢？const myArray = []; let i = 5; while (i >= 0){ myArray.push(i); i --; } Iterate with JavaScript For Loops For loops更简洁，不需要额外设定i=多少多少了，直接在loop中规定。const myArray = []; for (let i = 1; i &#x3C;= 5; i ++){ myArray.push(i); } 非常简洁美丽。 Iterate Odd Numbers With a For Loop Count...]]></description>
            <content:encoded><![CDATA[<p>JS基础的最后一课！</p><p><strong>Iterate with JavaScript While Loops</strong></p><p>loop是所有语言里都非常重要好用的一个概念，先来了解while loop。</p><pre data-type="codeBlock" text="const ourArray = [];
let i = 0;

while (i &lt; 5) {
  ourArray.push(i);
  i++;
}
"><code>const ourArray <span class="hljs-operator">=</span> [];
let i <span class="hljs-operator">=</span> <span class="hljs-number">0</span>;

<span class="hljs-keyword">while</span> (i <span class="hljs-operator">&#x3C;</span> <span class="hljs-number">5</span>) {
  ourArray.<span class="hljs-built_in">push</span>(i);
  i<span class="hljs-operator">+</span><span class="hljs-operator">+</span>;
}
</code></pre><p>计算机会反复执行然后回去验证直到while后面的条件不再满足。</p><p>比如上面的代码就是从0到4添加到array中。</p><p>如果要倒序添加呢？</p><pre data-type="codeBlock" text="const myArray = [];
let i = 5;

while (i &gt;= 0){
  myArray.push(i);
  i --;
}
"><code>const myArray <span class="hljs-operator">=</span> [];
let i <span class="hljs-operator">=</span> <span class="hljs-number">5</span>;

<span class="hljs-keyword">while</span> (i <span class="hljs-operator">></span><span class="hljs-operator">=</span> <span class="hljs-number">0</span>){
  myArray.<span class="hljs-built_in">push</span>(i);
  i <span class="hljs-operator">-</span><span class="hljs-operator">-</span>;
}
</code></pre><p><strong>Iterate with JavaScript For Loops</strong></p><p>For loops更简洁，不需要额外设定i=多少多少了，直接在loop中规定。</p><pre data-type="codeBlock" text="const myArray = [];

for (let i = 1; i &lt;= 5; i ++){
  myArray.push(i);
}
"><code>const myArray <span class="hljs-operator">=</span> [];

<span class="hljs-keyword">for</span> (let i <span class="hljs-operator">=</span> <span class="hljs-number">1</span>; i <span class="hljs-operator">&#x3C;</span><span class="hljs-operator">=</span> <span class="hljs-number">5</span>; i <span class="hljs-operator">+</span><span class="hljs-operator">+</span>){
  myArray.<span class="hljs-built_in">push</span>(i);
}
</code></pre><p>非常简洁美丽。</p><p><strong>Iterate Odd Numbers With a For Loop</strong></p><p><strong>Count Backwards With a For Loop</strong></p><p>奇数偶数的话，只需要把 ++变成 +=2即可/或者-=2。</p><pre data-type="codeBlock" text="const myArray = [];

for (let i = 1; i &lt; 10; i += 2) {
  myArray.push(i);
}
"><code>const myArray <span class="hljs-operator">=</span> [];

<span class="hljs-keyword">for</span> (let i <span class="hljs-operator">=</span> <span class="hljs-number">1</span>; i <span class="hljs-operator">&#x3C;</span> <span class="hljs-number">10</span>; i <span class="hljs-operator">+</span><span class="hljs-operator">=</span> <span class="hljs-number">2</span>) {
  myArray.<span class="hljs-built_in">push</span>(i);
}
</code></pre><p><strong>Iterate Through an Array with a For Loop</strong></p><p>如果给你一个myArr = [2, 3, 4, 5, 6]; 怎么把里面所有的数字加起来？</p><p>用for loop很容易做到。</p><p>先设定一个variable = 0，然后一一遍历myArr中所有数字，每次都把碰到的数字加上去。这个myArr里有5个数字，如果碰到其它长度的array怎么办？没关系，我们只需要把 i &lt; arr.length即可，任何长度都可以解决。</p><pre data-type="codeBlock" text="const myArr = [2, 3, 4, 5, 6];

let total = 0;
for (let i = 0; i &lt; myArr.length; i ++) {
  total += myArr[i];
}
"><code>const <span class="hljs-attr">myArr</span> = [<span class="hljs-number">2</span>, <span class="hljs-number">3</span>, <span class="hljs-number">4</span>, <span class="hljs-number">5</span>, <span class="hljs-number">6</span>]<span class="hljs-comment">;</span>

let <span class="hljs-attr">total</span> = <span class="hljs-number">0</span><span class="hljs-comment">;</span>
for (let <span class="hljs-attr">i</span> = <span class="hljs-number">0</span><span class="hljs-comment">; i &#x3C; myArr.length; i ++) {</span>
  total += myArr<span class="hljs-section">[i]</span><span class="hljs-comment">;</span>
}
</code></pre><p><strong>Nesting For Loops</strong></p><p>稍微有点烧脑，类似矩阵。我们之前说过，用array[i][j][z]这样的形式，能够取到任何复杂array到任何一个data。这里也是一样的道理。相当于我们在run arr[i]的基础上，再用loop run arr[i][j]，loop上叠loop，就能让计算机遍历所有的数字。如果是三层loop呢？那就for loop三层，像盗梦空间一样。</p><pre data-type="codeBlock" text="function multiplyAll(arr) {
  var product = 1;
  for (let i = 0; i &lt; arr.length; i++) {
    for (let j = 0; j &lt; arr[i].length; j++) {
      product *= arr[i][j];
    }
  }
  return product;
}
"><code><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">multiplyAll</span>(<span class="hljs-params">arr</span>) </span>{
  <span class="hljs-keyword">var</span> product <span class="hljs-operator">=</span> <span class="hljs-number">1</span>;
  <span class="hljs-keyword">for</span> (let i <span class="hljs-operator">=</span> <span class="hljs-number">0</span>; i <span class="hljs-operator">&#x3C;</span> arr.<span class="hljs-built_in">length</span>; i<span class="hljs-operator">+</span><span class="hljs-operator">+</span>) {
    <span class="hljs-keyword">for</span> (let j <span class="hljs-operator">=</span> <span class="hljs-number">0</span>; j <span class="hljs-operator">&#x3C;</span> arr[i].<span class="hljs-built_in">length</span>; j<span class="hljs-operator">+</span><span class="hljs-operator">+</span>) {
      product <span class="hljs-operator">*</span><span class="hljs-operator">=</span> arr[i][j];
    }
  }
  <span class="hljs-keyword">return</span> product;
}
</code></pre><p><strong>Iterate with JavaScript Do...While Loops</strong></p><p>另外一个有意思的loop结构，</p><p>do {</p><pre data-type="codeBlock" text="……..
"><code>……..
</code></pre><p>} while ( …);</p><p>意思和while loop一样， 不同点在于，无论while (..) 里面对条件满不满足，do … while loop的结构保证了do{..}里面的代码起码会跑一次。</p><pre data-type="codeBlock" text="const myArray = [];
let i = 10;

do {
  myArray.push(i);
  i ++;
} while (i &lt; 10);
"><code>const <span class="hljs-attr">myArray</span> = []<span class="hljs-comment">;</span>
let <span class="hljs-attr">i</span> = <span class="hljs-number">10</span><span class="hljs-comment">;</span>

do {
  myArray.push(i)<span class="hljs-comment">;</span>
  i ++<span class="hljs-comment">;</span>
} while (i &#x3C; 10)<span class="hljs-comment">;</span>
</code></pre><p>这里的i=10一开始就不符合 i &lt; 10的条件了，但myArray还是会包含10，因为代码已经跑了一次。</p><p><strong>Replace Loops using Recursion</strong></p><p>除了loop，我们还可以用recursion这个方法套娃。</p><p>类似于f(n) = f(n-1)*f(n-2)这样的方程式，我们数学里很熟悉了吧。但在程序里，需要设立一个中止点，比如(0&gt;=0);之类的，不然计算机会无限运行下去。</p><pre data-type="codeBlock" text="function sum(arr, n) {
  if(n &lt;= 0) {
    return 0;
  } else {
    return sum(arr, n - 1) + arr[n - 1];
  }
}
"><code><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">sum</span>(<span class="hljs-params">arr, n</span>) </span>{
  <span class="hljs-keyword">if</span>(n <span class="hljs-operator">&#x3C;</span><span class="hljs-operator">=</span> <span class="hljs-number">0</span>) {
    <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
  } <span class="hljs-keyword">else</span> {
    <span class="hljs-keyword">return</span> sum(arr, n <span class="hljs-operator">-</span> <span class="hljs-number">1</span>) <span class="hljs-operator">+</span> arr[n <span class="hljs-operator">-</span> <span class="hljs-number">1</span>];
  }
}
</code></pre><p><strong>Profile Lookup</strong></p><p>很好的练习，接近解决实际问题，建议复习下上面的nesting for loop这个知识点。</p><p><strong>Generate Random Fractions with JavaScript</strong></p><p><strong>Generate Random Whole Numbers with JavaScript</strong></p><p><strong>Generate Random Whole Numbers within a Range</strong></p><p>Math.random( )生成 [0,1)的随机数。</p><p>用*来扩大范围。</p><p>用Math.floor( )包住来取整。</p><pre data-type="codeBlock" text="function randomWholeNum() {

  return Math.floor(Math.random() * 10);
}
"><code><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">randomWholeNum</span>(<span class="hljs-params"></span>) </span>{

  <span class="hljs-keyword">return</span> Math.floor(Math.random() <span class="hljs-operator">*</span> <span class="hljs-number">10</span>);
}
</code></pre><p>如果不是从0开始，用这个乘数</p><pre data-type="codeBlock" text="Math.floor(Math.random() * (max - min + 1)) + min
"><code>Math.floor(Math.random() <span class="hljs-operator">*</span> (max <span class="hljs-operator">-</span> min <span class="hljs-operator">+</span> <span class="hljs-number">1</span>)) <span class="hljs-operator">+</span> min
</code></pre><p><strong>Use the parseInt Function</strong></p><p><strong>Use the parseInt Function with a Radix</strong></p><p>parseInt( )的功能，就是把string转换成interger</p><pre data-type="codeBlock" text="function convertToInteger(str) {
  return parseInt(str);
}
"><code><span class="hljs-keyword">function</span> <span class="hljs-title function_">convertToInteger</span>(<span class="hljs-params">str</span>) {
  <span class="hljs-keyword">return</span> <span class="hljs-built_in">parseInt</span>(str);
}
</code></pre><p>parseInt( )里面再加一个radix的parameter，就可以轻松完成数字进制的转换.</p><pre data-type="codeBlock" text="function convertToInteger(str) {
  return parseInt(str, 2);
}

convertToInteger(&quot;10011&quot;);
"><code>function <span class="hljs-built_in">convertToInteger</span>(str) {
  return <span class="hljs-built_in">parseInt</span>(str, <span class="hljs-number">2</span>);
}

<span class="hljs-built_in">convertToInteger</span>("<span class="hljs-number">10011</span>");
</code></pre><p>上面这个parseInt(str,2)中的2就是告诉计算机这个str是二进制的一个数，输出一个转化成十进制的integer。</p><p><strong>Use the Conditional (Ternary) Operator</strong></p><p>一行简写版的if statement</p><p>学会了确实很好用，基本结构: a ? b : c</p><p>a是condition</p><p>b是true的输出</p><p>c是false的输出</p><pre data-type="codeBlock" text="function checkEqual(a, b) {
  return a === b ? &quot;Equal&quot; : &quot;Not Equal&quot;;
}
"><code><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">checkEqual</span>(<span class="hljs-params">a, b</span>) </span>{
  <span class="hljs-keyword">return</span> a <span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span> b ? <span class="hljs-string">"Equal"</span> : <span class="hljs-string">"Not Equal"</span>;
}
</code></pre><p>对于小白来说，适用于很简单的if statement，复杂的，咱还是规规矩矩把基本的用会了再来耍酷。</p><p><strong>Use Multiple Conditional (Ternary) Operators</strong></p><p>复杂的来了。</p><p>把else, else if什么的统统换成 : 来代替。</p><pre data-type="codeBlock" text="function checkSign(num) {
  return num &gt; 0 ? &quot;positive&quot;
    : num &lt; 0 ? &quot;negative&quot;
    :  &quot;zero&quot;;
}
"><code><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">checkSign</span>(<span class="hljs-params">num</span>) </span>{
  <span class="hljs-keyword">return</span> num <span class="hljs-operator">></span> <span class="hljs-number">0</span> ? <span class="hljs-string">"positive"</span>
    : num <span class="hljs-operator">&#x3C;</span> <span class="hljs-number">0</span> ? <span class="hljs-string">"negative"</span>
    :  <span class="hljs-string">"zero"</span>;
}
</code></pre><p><strong>Use Recursion to Create a Countdown</strong></p><p>这个练习回顾了recursion。</p><p>//注意，push是加在末尾的，练习的要求是加在开头，用什么呢？之前有讲过。</p><pre data-type="codeBlock" text="function countdown(n){
  if (n &lt; 1){
    return [];
  } else {
    let countArray = countdown(n - 1);
    countArray.unshift(n);
    return countArray;
  }
}
"><code><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">countdown</span>(<span class="hljs-params">n</span>)</span>{
  <span class="hljs-keyword">if</span> (n <span class="hljs-operator">&#x3C;</span> <span class="hljs-number">1</span>){
    <span class="hljs-keyword">return</span> [];
  } <span class="hljs-keyword">else</span> {
    let countArray <span class="hljs-operator">=</span> countdown(n <span class="hljs-operator">-</span> <span class="hljs-number">1</span>);
    countArray.unshift(n);
    <span class="hljs-keyword">return</span> countArray;
  }
}
</code></pre><p><strong>Use Recursion to Create a Range of Numbers</strong></p><p>更进一步的练习。</p><p>道理是一样的，把n换成endNum, n-1换成endNum -1 就可以了。</p><pre data-type="codeBlock" text="function rangeOfNumbers(startNum, endNum) {
  if (startNum === endNum) {
    return [startNum];
  } else {
    let number = rangeOfNumbers(startNum, endNum - 1);
    number.push(endNum);
    return number;
  }
};
"><code><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">rangeOfNumbers</span>(<span class="hljs-params">startNum, endNum</span>) </span>{
  <span class="hljs-keyword">if</span> (startNum <span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span> endNum) {
    <span class="hljs-keyword">return</span> [startNum];
  } <span class="hljs-keyword">else</span> {
    let number <span class="hljs-operator">=</span> rangeOfNumbers(startNum, endNum <span class="hljs-operator">-</span> <span class="hljs-number">1</span>);
    number.<span class="hljs-built_in">push</span>(endNum);
    <span class="hljs-keyword">return</span> number;
  }
};
</code></pre><p>好了，JS基础知识就全部学完了，我们用了7天，对于小白来说还是可以的。希望小伙伴们好好巩固，常加复习～</p><p>有什么问题，可以找我留言</p><p>这里和这里可以找到我</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://discord.gg/madnfts">https://discord.gg/madnfts</a></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://discord.gg/Z25p8gkZWx">https://discord.gg/Z25p8gkZWx</a></p>]]></content:encoded>
            <author>ashonthewall@newsletter.paragraph.com (aow)</author>
        </item>
        <item>
            <title><![CDATA[JavaScript 入门 Day 6]]></title>
            <link>https://paragraph.com/@ashonthewall/javascript-day-6</link>
            <guid>bVZRj7ZQWVzJWZFRVmQ1</guid>
            <pubDate>Sun, 20 Mar 2022 09:40:10 GMT</pubDate>
            <description><![CDATA[大概还有30个练习我们就能学完JS的基础知识了。 Build JavaScript Objects object是一个非常重要的概念，它很像array，不同点在于array里面装的data是通过排序(Index)来标注，比如myArray[0], myArray[8]等等，而object是通过命名来标注，比如 猫【名字：kitty，年龄：2，性别：公】这样子，更符合我们现实世界中对物品属性的标注。const cat = { "name": "Whiskers", "legs": 4, "tails": 1, "enemies": ["Water", "Dogs"] }; // object中的各种“标签”，比如上面的”name”, “legs”等，都是属于string，所以别忘了加 “ ”。 Accessing Object Properties with Dot Notation Accessing Object Properties with Bracket Notation access array中的data需要用[ ]，而在object中，由于有了“标签”，可以用 .标...]]></description>
            <content:encoded><![CDATA[<p>大概还有30个练习我们就能学完JS的基础知识了。</p><p><strong>Build JavaScript Objects</strong></p><p>object是一个非常重要的概念，它很像array，不同点在于array里面装的data是通过排序(Index)来标注，比如myArray[0], myArray[8]等等，而object是通过命名来标注，比如</p><p>猫【名字：kitty，年龄：2，性别：公】这样子，更符合我们现实世界中对物品属性的标注。</p><pre data-type="codeBlock" text="const cat = {
  &quot;name&quot;: &quot;Whiskers&quot;,
  &quot;legs&quot;: 4,
  &quot;tails&quot;: 1,
  &quot;enemies&quot;: [&quot;Water&quot;, &quot;Dogs&quot;]
};
"><code><span class="hljs-type">const</span> cat = {
  <span class="hljs-string">"name"</span>: <span class="hljs-string">"Whiskers"</span>,
  <span class="hljs-string">"legs"</span>: <span class="hljs-number">4</span>,
  <span class="hljs-string">"tails"</span>: <span class="hljs-number">1</span>,
  <span class="hljs-string">"enemies"</span>: [<span class="hljs-string">"Water"</span>, <span class="hljs-string">"Dogs"</span>]
};
</code></pre><p>// object中的各种“标签”，比如上面的”name”, “legs”等，都是属于string，所以别忘了加 “ ”。</p><p><strong>Accessing Object Properties with Dot Notation</strong></p><p><strong>Accessing Object Properties with Bracket Notation</strong></p><p>access array中的data需要用[ ]，而在object中，由于有了“标签”，可以用 .标签的方式和 [ ]对方式都ok。</p><p>当标签中带空格的时候，比如 “ family name”，那么用[“family name”]，而不能用.family name,因为计算机无法识别后者。</p><p><strong>Accessing Object Properties with Variables</strong></p><p>在object中，除了直接引用标签外，还可以用variable赋值。</p><pre data-type="codeBlock" text="const testObj = {
  12: &quot;Namath&quot;,
  16: &quot;Montana&quot;,
  19: &quot;Unitas&quot;
};

const playerNumber = 16; 
const player = testObj[playerNumber];  
"><code>const <span class="hljs-attr">testObj</span> = {
  12: "Namath",
  16: "Montana",
  19: "Unitas"
}<span class="hljs-comment">;</span>

const <span class="hljs-attr">playerNumber</span> = <span class="hljs-number">16</span><span class="hljs-comment">; </span>
const <span class="hljs-attr">player</span> = testObj[playerNumber]<span class="hljs-comment">;  </span>
</code></pre><p>这样就可以找到testObj这个object中标签为16的项。</p><p>同样的，只需要重新赋值playNumer = 19, 就可以找到标签为19的项。以此类推。</p><p><strong>Updating Object Properties</strong></p><p>object里面的property是可以被修改的。比如</p><pre data-type="codeBlock" text="const myDog = {
  &quot;name&quot;: &quot;Coder&quot;,
  &quot;legs&quot;: 4,
  &quot;tails&quot;: 1,
  &quot;friends&quot;: [&quot;freeCodeCamp Campers&quot;]
};

myDog.name = &quot;Happy Coder&quot;;
"><code>const myDog <span class="hljs-operator">=</span> {
  <span class="hljs-string">"name"</span>: <span class="hljs-string">"Coder"</span>,
  <span class="hljs-string">"legs"</span>: <span class="hljs-number">4</span>,
  <span class="hljs-string">"tails"</span>: <span class="hljs-number">1</span>,
  <span class="hljs-string">"friends"</span>: [<span class="hljs-string">"freeCodeCamp Campers"</span>]
};

myDog.<span class="hljs-built_in">name</span> <span class="hljs-operator">=</span> <span class="hljs-string">"Happy Coder"</span>;
</code></pre><p>修改方式有两种，可以用.property 或者 [“property”]，和之前说的一样。</p><p><strong>Add New Properties to a JavaScript Object</strong></p><p>增加property和修改的操作是一样的。</p><p><strong>Delete Properties from a JavaScript Object</strong></p><p>删除怎么办呢？我们使用delete这个命令。</p><pre data-type="codeBlock" text="const myDog = {
  &quot;name&quot;: &quot;Happy Coder&quot;,
  &quot;legs&quot;: 4,
  &quot;tails&quot;: 1,
  &quot;friends&quot;: [&quot;freeCodeCamp Campers&quot;],
  &quot;bark&quot;: &quot;woof&quot;
};

delete myDog.tails;
"><code>const myDog <span class="hljs-operator">=</span> {
  <span class="hljs-string">"name"</span>: <span class="hljs-string">"Happy Coder"</span>,
  <span class="hljs-string">"legs"</span>: <span class="hljs-number">4</span>,
  <span class="hljs-string">"tails"</span>: <span class="hljs-number">1</span>,
  <span class="hljs-string">"friends"</span>: [<span class="hljs-string">"freeCodeCamp Campers"</span>],
  <span class="hljs-string">"bark"</span>: <span class="hljs-string">"woof"</span>
};

<span class="hljs-keyword">delete</span> myDog.tails;
</code></pre><p>很简单。</p><p><strong>Using Objects for Lookups</strong> 一个非常有意思的练习。可以把它理解成object可以当作词典使用。</p><p>当我们明确知道检索对象是一个有限的目录时，与其通过if statement或者switch去循环验证条件，还不如把整个检索对象编译成一个object，然后通过一个function的关键词去检索找到结果。</p><pre data-type="codeBlock" text="function phoneticLookup(val) {
  let result = &quot;&quot;;
  const lookup = {
    &quot;alpha&quot;: &quot;Adams&quot;,
    &quot;bravo&quot;: &quot;Boston&quot;,
    &quot;charlie&quot;: &quot;Chicago&quot;,
    &quot;delta&quot;: &quot;Denver&quot;,
    &quot;echo&quot;: &quot;Easy&quot;,
    &quot;foxtrot&quot;: &quot;Frank&quot;
  };

  result = lookup[val];
  return result;
}

phoneticLookup(&quot;charlie&quot;);
"><code><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">phoneticLookup</span>(<span class="hljs-params">val</span>) </span>{
  let result <span class="hljs-operator">=</span> <span class="hljs-string">""</span>;
  const lookup <span class="hljs-operator">=</span> {
    <span class="hljs-string">"alpha"</span>: <span class="hljs-string">"Adams"</span>,
    <span class="hljs-string">"bravo"</span>: <span class="hljs-string">"Boston"</span>,
    <span class="hljs-string">"charlie"</span>: <span class="hljs-string">"Chicago"</span>,
    <span class="hljs-string">"delta"</span>: <span class="hljs-string">"Denver"</span>,
    <span class="hljs-string">"echo"</span>: <span class="hljs-string">"Easy"</span>,
    <span class="hljs-string">"foxtrot"</span>: <span class="hljs-string">"Frank"</span>
  };

  result <span class="hljs-operator">=</span> lookup[val];
  <span class="hljs-keyword">return</span> result;
}

phoneticLookup(<span class="hljs-string">"charlie"</span>);
</code></pre><p>这里，我们通过把result赋值给object lookup的一个检索项，来返回function phoneticLookup的数据。</p><p><strong>Testing Objects for Properties</strong></p><p>这里讲到一个验证property是否存在的方式 ： .hasOwnProperty(propname)</p><p>如果存在，会返回true，不存在，返回false。</p><p>然后练习部分通过一个function的方式，两个arguments一个是object,另一个是待验证的property，来使用这个.hasOwnProperty命令，得到简洁的结果。</p><pre data-type="codeBlock" text="function checkObj(obj, checkProp) {
  if (obj.hasOwnProperty(checkProp)){
    return obj[checkProp];
  } else {
    return &quot;Not Found&quot;;
  }
}
"><code><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">checkObj</span>(<span class="hljs-params">obj, checkProp</span>) </span>{
  <span class="hljs-keyword">if</span> (obj.hasOwnProperty(checkProp)){
    <span class="hljs-keyword">return</span> obj[checkProp];
  } <span class="hljs-keyword">else</span> {
    <span class="hljs-keyword">return</span> <span class="hljs-string">"Not Found"</span>;
  }
}
</code></pre><p><strong>Manipulating Complex Objects</strong></p><p><strong>Accessing Nested Objects</strong></p><p><strong>Accessing Nested Arrays</strong></p><p><strong>Record Collection</strong></p><p>obejct中可以放很多不同类型的data type，比如arrays, booleans, number, string, function甚至嵌套object。</p><p>总之，object就是一个大词典，什么都能装。</p><p>这里，无论access array还是objects, 方法之前都讲过，很简单，唯一需要的是细心。</p><p>个人感觉代码入门之后，语法什么的都不是问题，和财务有点像，大部分时候都是在解决因为粗心或者思路错误带来的问题。</p><p>好了，今天的练习先到这里，object这个概念初体验完成，概念很简单，但是基础很重要。</p><p>明天学习loops，然后所有的基础知识应该能学完。</p><p>在这里和这里也可以找到我。</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://discord.gg/madnfts">https://discord.gg/madnfts</a></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://discord.gg/Z25p8gkZWx">https://discord.gg/Z25p8gkZWx</a></p>]]></content:encoded>
            <author>ashonthewall@newsletter.paragraph.com (aow)</author>
        </item>
        <item>
            <title><![CDATA[JavaScript 入门 Day 5]]></title>
            <link>https://paragraph.com/@ashonthewall/javascript-day-5</link>
            <guid>a31DiT2aF5SqLeJTuOXo</guid>
            <pubDate>Fri, 18 Mar 2022 07:53:29 GMT</pubDate>
            <description><![CDATA[进度很快，基础部分应该很快就能学完了。 Stand in Line 这个练习举了个例子，通过function来实现array的一些传递。function nextInLine(arr, item) { arr.push(item); let removed = arr.shift(); return removed; } Understanding Boolean Values 另一个重要概念，boolean value。 boolean value是另外一种data type，只有两个值，true/false。 很简单，就像yes or no, 1 or 0一样。 这个二元概念也为之后的if, condition这种算法逻辑打下了基础。 Use Conditional Logic with If Statements If指令是condition logic的最基本形态。 If(巴拉巴拉=true){ return 很好，满足条件; } return 不满足； // { }里面是满足if条件的情况，{ }外面是不满足的情况。function trueOrFalse(wasTha...]]></description>
            <content:encoded><![CDATA[<p>进度很快，基础部分应该很快就能学完了。</p><p><strong>Stand in Line</strong></p><p>这个练习举了个例子，通过function来实现array的一些传递。</p><pre data-type="codeBlock" text="function nextInLine(arr, item) {
  arr.push(item);
  let removed = arr.shift();
  return removed;
}
"><code><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">nextInLine</span>(<span class="hljs-params">arr, item</span>) </span>{
  arr.<span class="hljs-built_in">push</span>(item);
  let removed <span class="hljs-operator">=</span> arr.shift();
  <span class="hljs-keyword">return</span> removed;
}
</code></pre><p><strong>Understanding Boolean Values</strong></p><p>另一个重要概念，boolean value。</p><p>boolean value是另外一种data type，只有两个值，true/false。</p><p>很简单，就像yes or no, 1 or 0一样。</p><p>这个二元概念也为之后的if, condition这种算法逻辑打下了基础。</p><p><strong>Use Conditional Logic with If Statements</strong></p><p>If指令是condition logic的最基本形态。</p><p>If(巴拉巴拉=true){</p><p>return 很好，满足条件;</p><p>}</p><p>return 不满足；</p><p>// { }里面是满足if条件的情况，{ }外面是不满足的情况。</p><pre data-type="codeBlock" text="function trueOrFalse(wasThatTrue) {
  if (wasThatTrue){
    return &quot;Yes, that was true&quot;;
  }
  return &quot;No, that was false&quot;;

}
"><code><span class="hljs-keyword">function</span> <span class="hljs-title function_">trueOrFalse</span>(<span class="hljs-params">wasThatTrue</span>) {
  <span class="hljs-keyword">if</span> (wasThatTrue){
    <span class="hljs-keyword">return</span> <span class="hljs-string">"Yes, that was true"</span>;
  }
  <span class="hljs-keyword">return</span> <span class="hljs-string">"No, that was false"</span>;

}
</code></pre><p><strong>Comparison with the Equality Operator</strong></p><p><strong>Comparison with the Strict Equality Operator</strong></p><p><strong>Practice comparing different values</strong></p><p><strong>Comparison with the Inequality Operator</strong></p><p><strong>Comparison with the Strict Inequality Operator</strong></p><p><strong>Comparison with the Greater Than Operator</strong></p><p><strong>Comparison with the Greater Than Or Equal To Operator</strong></p><p><strong>Comparison with the Less Than Operator</strong></p><p><strong>Comparison with the Less Than Or Equal To Operator</strong></p><p>if后面的( )里面可以包括价值的判断，返回true or false这两个value。</p><p>// value的判断需要用 == 哦，两个等号。一个等号= 是赋值。</p><p>这里还有个细节， == 是模糊判断，比如 2 == “2”；虽然左边是number，右边是string，但计算机会忽略data type，给你返回true;</p><p>// 其实是js自动给你进行了type的转换。</p><p>怎么严格判断呢？用 “===”;</p><p>2 === “2”; 返回false.</p><p>相等搞明白了，不等怎么办？很简单，前面加个!, “!=” or “!==”。</p><p>一样的道理，“!=”是模糊不等， “!==”是严格不等。</p><p>然后是&gt;, &lt;, &gt;=, &lt;= ;</p><p>这些都很简单，就不一一赘述了。这几节课太水了。。。不过里面的逻辑值得记住，都是机遇true/false这个基础。</p><p><strong>Comparisons with the Logical And Operator</strong></p><p><strong>Comparisons with the Logical Or Operator</strong></p><p>如果是多段条件怎么办呢？</p><p>可以这样，</p><pre data-type="codeBlock" text="if (num &gt; 5) {
  if (num &lt; 10) {
    return &quot;Yes&quot;;
  }
}
return &quot;No&quot;;
"><code><span class="hljs-keyword">if</span> (num > <span class="hljs-number">5</span>) {
  <span class="hljs-keyword">if</span> (num &#x3C; <span class="hljs-number">10</span>) {
    <span class="hljs-keyword">return</span> <span class="hljs-string">"Yes"</span>;
  }
}
<span class="hljs-keyword">return</span> <span class="hljs-string">"No"</span>;
</code></pre><p>更简单的方法，用&amp;&amp;把条件合并起来。</p><pre data-type="codeBlock" text="if (num &gt; 5 &amp;&amp; num &lt; 10) {
  return &quot;Yes&quot;;
}
return &quot;No&quot;;
"><code><span class="hljs-keyword">if</span> (num <span class="hljs-operator">></span> <span class="hljs-number">5</span> <span class="hljs-operator">&#x26;</span><span class="hljs-operator">&#x26;</span> num <span class="hljs-operator">&#x3C;</span> <span class="hljs-number">10</span>) {
  <span class="hljs-keyword">return</span> <span class="hljs-string">"Yes"</span>;
}
<span class="hljs-keyword">return</span> <span class="hljs-string">"No"</span>;
</code></pre><p>&amp;&amp; 是 “和”，“或”怎么表示呢？</p><pre data-type="codeBlock" text="if (num &gt; 10 || num &lt; 5) {
  return &quot;No&quot;;
}
return &quot;Yes&quot;;
"><code><span class="hljs-keyword">if</span> (num <span class="hljs-operator">></span> <span class="hljs-number">10</span> <span class="hljs-operator">|</span><span class="hljs-operator">|</span> num <span class="hljs-operator">&#x3C;</span> <span class="hljs-number">5</span>) {
  <span class="hljs-keyword">return</span> <span class="hljs-string">"No"</span>;
}
<span class="hljs-keyword">return</span> <span class="hljs-string">"Yes"</span>;
</code></pre><p>用 ||；</p><p><strong>Introducing Else Statements</strong></p><p>以上我们学习了如果if条件是true，怎么返回结果，那如果是flase呢，我们可以通过else也返回结果</p><pre data-type="codeBlock" text="function testElse(val) {
  let result = &quot;&quot;;

  if (val &gt; 5) {
    result = &quot;Bigger than 5&quot;;
  } else {
    result = &quot;5 or Smaller&quot;;
  }
  return result;
}

testElse(4);
"><code>function testElse(val) {
  let <span class="hljs-attr">result</span> = <span class="hljs-string">""</span><span class="hljs-comment">;</span>

  if (val > 5) {
    <span class="hljs-attr">result</span> = <span class="hljs-string">"Bigger than 5"</span><span class="hljs-comment">;</span>
  } else {
    <span class="hljs-attr">result</span> = <span class="hljs-string">"5 or Smaller"</span><span class="hljs-comment">;</span>
  }
  return result<span class="hljs-comment">;</span>
}

testElse(4)<span class="hljs-comment">;</span>
</code></pre><p><strong>Introducing Else If Statements</strong></p><p>Else if语句很有用，相当于可以无限增加if statement</p><pre data-type="codeBlock" text="function testElseIf(val) {
  if (val &gt; 10) {
    return &quot;Greater than 10&quot;;
  } else if (val &lt; 5) {
    return &quot;Smaller than 5&quot;;
  } else{
    return &quot;Between 5 and 10&quot;;
  }
}

testElseIf(7);
"><code>function testElseIf(<span class="hljs-keyword">val</span>) {
  <span class="hljs-keyword">if</span> (<span class="hljs-keyword">val</span> > <span class="hljs-number">10</span>) {
    <span class="hljs-keyword">return</span> <span class="hljs-string">"Greater than 10"</span>;
  } <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (<span class="hljs-keyword">val</span> &#x3C; <span class="hljs-number">5</span>) {
    <span class="hljs-keyword">return</span> <span class="hljs-string">"Smaller than 5"</span>;
  } <span class="hljs-keyword">else</span>{
    <span class="hljs-keyword">return</span> <span class="hljs-string">"Between 5 and 10"</span>;
  }
}

testElseIf(<span class="hljs-number">7</span>);
</code></pre><p>//进入if语句后，会出现越来越多的 { }，大家要仔细。当然，大部分编程工具现在都可以自动识别对应 { }的。</p><p><strong>Logical Order in If Else Statements</strong></p><p>这课其实说了一点，if else statement和所有代码一样，是从上往下执行的。所以，我们应该把更宽松的条件放在上游，更严格的条件放在下游，这样才符合逻辑。</p><p><strong>Chaining If Else Statements</strong></p><p>很好的练习，把else if 逻辑串联起来实际应用。</p><p>//当然，这是最基础的方法，后面会有更简便的方法。</p><pre data-type="codeBlock" text="unction testSize(num) {
  // Only change code below this line
  if (num &lt; 5){
    return &quot;Tiny&quot;;
  } else if (num &lt; 10){
    return &quot;Small&quot;;
  } else if (num &lt; 15){
    return &quot;Medium&quot;;
  } else if (num &lt; 20){
    return &quot;Large&quot;;
  } else if (num &gt;= 20){
    return &quot;Huge&quot;;
  }

  return &quot;Change Me&quot;;
  // Only change code above this line
}

testSize(7);
"><code>unction testSize(num) {
  <span class="hljs-comment">// Only change code below this line</span>
  <span class="hljs-keyword">if</span> (num &#x3C; <span class="hljs-number">5</span>){
    <span class="hljs-keyword">return</span> <span class="hljs-string">"Tiny"</span>;
  } <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (num &#x3C; <span class="hljs-number">10</span>){
    <span class="hljs-keyword">return</span> <span class="hljs-string">"Small"</span>;
  } <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (num &#x3C; <span class="hljs-number">15</span>){
    <span class="hljs-keyword">return</span> <span class="hljs-string">"Medium"</span>;
  } <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (num &#x3C; <span class="hljs-number">20</span>){
    <span class="hljs-keyword">return</span> <span class="hljs-string">"Large"</span>;
  } <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (num >= <span class="hljs-number">20</span>){
    <span class="hljs-keyword">return</span> <span class="hljs-string">"Huge"</span>;
  }

  <span class="hljs-keyword">return</span> <span class="hljs-string">"Change Me"</span>;
  <span class="hljs-comment">// Only change code above this line</span>
}

testSize(<span class="hljs-number">7</span>);
</code></pre><p><strong>Golf Code</strong></p><p>高尔夫游戏记分的应用小程序，用简单的if else就可以完成，值得完整练习一下。</p><p>好了，今天就先学到这儿，if else语句可以说是非常基础和重要的，形式很简单，以后应用非常广，可以反复练习好好掌握精髓。</p><p>对了，除了这里之外，还可以在这两个地方找到我。</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://discord.gg/madnfts">https://discord.gg/madnfts</a></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://discord.gg/Z25p8gkZWx">https://discord.gg/Z25p8gkZWx</a></p>]]></content:encoded>
            <author>ashonthewall@newsletter.paragraph.com (aow)</author>
        </item>
        <item>
            <title><![CDATA[JavaScript 入门 Day 4]]></title>
            <link>https://paragraph.com/@ashonthewall/javascript-day-4</link>
            <guid>R0WE8R6yYt6NMj4YKLrM</guid>
            <pubDate>Thu, 17 Mar 2022 13:09:42 GMT</pubDate>
            <description><![CDATA[今天从学function开始。 Write Reusable JavaScript with Functions 之前说过varialbe类似一个装数据的盒子，那么，functions就是一个装算法步骤的盒子。 每次调用functions，等于按照function规定好的12345…这些步骤从头到尾来一遍。 所以，function是可以反复使用的。function reusableFunction(){ console.log("Hi World"); } 这个function里面有一个步骤，就是输出 “Hi World”这两个单词。 下次需要输出这两个单词的时候，只需要调用这个functionreusableFunction(); Passing Values to Functions with Arguments function的这个( )里面可以预留位置给parameters，这些parameters之后就可以直接带入到function的使用中了。 比如写一个简单的加法functionfunction sum(x,y){ console.log(x + y); } 这个s...]]></description>
            <content:encoded><![CDATA[<p>今天从学function开始。</p><p><strong>Write Reusable JavaScript with Functions</strong></p><p>之前说过varialbe类似一个装数据的盒子，那么，functions就是一个装算法步骤的盒子。</p><p>每次调用functions，等于按照function规定好的12345…这些步骤从头到尾来一遍。</p><p>所以，function是可以反复使用的。</p><pre data-type="codeBlock" text="function reusableFunction(){
  console.log(&quot;Hi World&quot;);
}
"><code><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">reusableFunction</span>(<span class="hljs-params"></span>)</span>{
  console.log(<span class="hljs-string">"Hi World"</span>);
}
</code></pre><p>这个function里面有一个步骤，就是输出 “Hi World”这两个单词。</p><p>下次需要输出这两个单词的时候，只需要调用这个function</p><pre data-type="codeBlock" text="reusableFunction();
"><code><span class="hljs-built_in">reusableFunction</span>();
</code></pre><p><strong>Passing Values to Functions with Arguments</strong></p><p>function的这个( )里面可以预留位置给parameters，这些parameters之后就可以直接带入到function的使用中了。</p><p>比如写一个简单的加法function</p><pre data-type="codeBlock" text="function sum(x,y){
  console.log(x + y);
}
"><code><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">sum</span>(<span class="hljs-params">x,y</span>)</span>{
  console.log(x <span class="hljs-operator">+</span> y);
}
</code></pre><p>这个sum 其实就是个+的功能。</p><p>运行它</p><pre data-type="codeBlock" text="sum(1, 2);
"><code><span class="hljs-built_in">sum</span>(<span class="hljs-number">1</span>, <span class="hljs-number">2</span>);
</code></pre><p>等于是运行了 1 + 2, 输出就是3。</p><p><strong>Return a Value from a Function with Return</strong></p><p>当然，function不一定要输出结果，还可以return。</p><p>return 是返回结果暂时储存，但不输出。</p><pre data-type="codeBlock" text="function timesFive (num){
  return num * 5;
}
"><code><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">timesFive</span> (<span class="hljs-params">num</span>)</span>{
  <span class="hljs-keyword">return</span> num <span class="hljs-operator">*</span> <span class="hljs-number">5</span>;
}
</code></pre><p>timesFive(5);</p><p>返回数值5，但不会打印输出。</p><p><strong>Global Scope and Functions</strong></p><p><strong>Local Scope and Functions</strong></p><p>variable分两种，一种是在function里面定义的，另一种是在function外面定义的。</p><p>function外面定义的variable称为global variable，global variable其它的function也可以调用。</p><p>function内定义的variable称为local variable，只在function内可以调用。</p><p>注意：没有用let 或 const定义的variable自动成为global variable，无论是function内外。所以为了避免歧义，请总是使用let 或 const来定义variable。</p><p><strong>Global vs. Local Scope in Functions</strong></p><p>当local variable和global variable同名的时候，function会优先调用function内的variable。</p><p><strong>Understanding Undefined Value returned from a Function</strong> 如果一个function里面没有return value，那么function还是会运行，但是return value就会显示undefined.</p><p><strong>Assignment with a Returned Value</strong></p><p>很好理解。</p><p>在这些地方可以找到我</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://discord.gg/madnfts">https://discord.gg/madnfts</a></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://discord.gg/Z25p8gkZWx">https://discord.gg/Z25p8gkZWx</a></p>]]></content:encoded>
            <author>ashonthewall@newsletter.paragraph.com (aow)</author>
        </item>
        <item>
            <title><![CDATA[JavaScript 入门 Day 3]]></title>
            <link>https://paragraph.com/@ashonthewall/javascript-day-3</link>
            <guid>676wlYPYPyY1aqOCwYei</guid>
            <pubDate>Mon, 14 Mar 2022 13:11:23 GMT</pubDate>
            <description><![CDATA[Day3，继续JS基础。 Find the Length of a String 这里我们接触到一个概念叫property。 .length这种形式的后缀是一种property，property可以理解成一种预设的方程功能，能告诉你一些信息。 .length，能告诉你string的字节长度。 Use Bracket Notation to Find the First Character in a String 怎么在string中定位呢？ “Charles” 这个string一共7个字节，但由于计算机也语言都是从0开始计数，所以“C”其实是这个string的第[0]位，以此类推。const name = “Charles”; name[3]是哪个字母呢？ 对，是“r”。 Understand String Immutability String有个特性，不可被局部修改，要修改只能全部替换。 Use Bracket Notation to Find the Last Character in a String 怎么表示最后一个字节呢？还记得 .length这个property吗？...]]></description>
            <content:encoded><![CDATA[<p>Day3，继续JS基础。</p><p><strong>Find the Length of a String</strong></p><p>这里我们接触到一个概念叫property。</p><p>.length这种形式的后缀是一种property，property可以理解成一种预设的方程功能，能告诉你一些信息。</p><p>.length，能告诉你string的字节长度。</p><p><strong>Use Bracket Notation to Find the First Character in a String</strong></p><p>怎么在string中定位呢？</p><p>“Charles” 这个string一共7个字节，但由于计算机也语言都是从0开始计数，所以“C”其实是这个string的第[0]位，以此类推。</p><pre data-type="codeBlock" text="const name = “Charles”;
"><code>const <span class="hljs-attr">name</span> = “Charles”<span class="hljs-comment">;</span>
</code></pre><p>name[3]是哪个字母呢？</p><p>对，是“r”。</p><p><strong>Understand String Immutability</strong></p><p>String有个特性，不可被局部修改，要修改只能全部替换。</p><p><strong>Use Bracket Notation to Find the Last Character in a String</strong></p><p>怎么表示最后一个字节呢？还记得 .length这个property吗？</p><p>如果一个单词有5个字母，举个例子，first，那么t是倒数第一个字节，也是第[4]个字节。可以用.length-1来表示。</p><pre data-type="codeBlock" text="let letter = &quot;first&quot;;
letter[letter.length-1];  
"><code>let <span class="hljs-attr">letter</span> = <span class="hljs-string">"first"</span><span class="hljs-comment">;</span>
letter<span class="hljs-section">[letter.length-1]</span><span class="hljs-comment">;  </span>
</code></pre><p><strong>Use Bracket Notation to Find the Nth-to-Last Character in a String</strong></p><p>以此类推，倒数低3个字节，就是</p><pre data-type="codeBlock" text="letter[letter.length-3];
"><code>letter[letter.<span class="hljs-built_in">length</span>-<span class="hljs-number">3</span>];
</code></pre><p><strong>Word Blanks</strong></p><p>一个简单的练习，千万注意要留出空格 “ ” 和加上标点符号。</p><p><strong>Store Multiple Values in one Variable using JavaScript Arrays</strong></p><p>这里引入一个重要的概念，array。</p><p>array就是可以储存多个varaible的盒子。</p><pre data-type="codeBlock" text="myArray = [&quot;yes&quot;,&quot;no&quot;,43,536];
"><code><span class="hljs-attr">myArray</span> = [<span class="hljs-string">"yes"</span>,<span class="hljs-string">"no"</span>,<span class="hljs-number">43</span>,<span class="hljs-number">536</span>]<span class="hljs-comment">;</span>
</code></pre><p>array里面的东西用[ ]框进去。</p><p><strong>Nest one Array within Another Array</strong></p><p>机灵的小伙伴要问了，array能存variable，那么array能存array吗？</p><p>可以的。</p><p>存了array的array就变成了nested array。</p><p>举个简单的例子，john考试得了98分，jason得了99分，怎么表示呢？</p><pre data-type="codeBlock" text="grades = [[&quot;john&quot;, 98], [&quot;jason&quot;, 99]];
"><code><span class="hljs-attr">grades</span> = [[<span class="hljs-string">"john"</span>, <span class="hljs-number">98</span>], [<span class="hljs-string">"jason"</span>, <span class="hljs-number">99</span>]]<span class="hljs-comment">;</span>
</code></pre><p>注意，每个array直接用 “，”隔开。</p><p><strong>Access Array Data with Indexes</strong></p><p>和variable一样，array也能查找。</p><p>比如我们要找到上面john的分数，john的数据在grades这个array的第一个位置，也就是[0]</p><pre data-type="codeBlock" text="johnGrade = grades[0];
"><code><span class="hljs-attr">johnGrade</span> = grades[<span class="hljs-number">0</span>]<span class="hljs-comment">;</span>
</code></pre><p><strong>Modify Array Data With Indexes</strong></p><p><strong>Access Multi-Dimensional Arrays With Indexes</strong></p><p>array可以修改。</p><p>比如，我们把john的分数改成95</p><pre data-type="codeBlock" text="grades[0][1] = 95;
"><code>grades<span class="hljs-section">[0]</span><span class="hljs-section">[1]</span> = 95<span class="hljs-comment">;</span>
</code></pre><p>grades[0]找到了[“john”, 98]</p><p>grades[0][1]找到了 “98”，改成95即可。</p><p><strong>Manipulate Arrays With push()</strong></p><p><strong>Manipulate Arrays With pop()</strong></p><p><strong>Manipulate Arrays With shift()</strong></p><p><strong>Manipulate Arrays With unshift()</strong></p><p>.push()是在array末尾加上一项；</p><p>.pop()是在array末尾弹掉一项;</p><p>.shift()是在array第一位弹掉一项；</p><p>.unshift()是在array第一位加上一项；</p><p>简单记法：</p><p>push=尾+</p><p>pop=尾-</p><p>shift=头-</p><p>unshift=头+</p><p><strong>Shopping List</strong></p><p>小练习，没啥难度，细心即可。</p><p>今天就这吧，都很简单。</p><p>明天开始学习非常非常重要的function了，一起加油！</p>]]></content:encoded>
            <author>ashonthewall@newsletter.paragraph.com (aow)</author>
        </item>
        <item>
            <title><![CDATA[JavaScript 入门 Day2]]></title>
            <link>https://paragraph.com/@ashonthewall/javascript-day2</link>
            <guid>eGlJSHhaPWwfEhbWhJBS</guid>
            <pubDate>Wed, 09 Mar 2022 13:03:39 GMT</pubDate>
            <description><![CDATA[第二天，还是比较简单的基础知识，先学后教，记得牢，不费力，冲！ 11 Add Two Numbers with JavaScript 12 Subtract One Number from Another with JavaScript 13 Multiply Two Numbers with JavaScript 14 Divide One Number by Another with JavaScript 来到Number这个data type。 这个很好理解，就是数字。 const a = 1; const b = 1; a + b = 2; 简直太简单了吧。 加减乘除一样的，都放一起了。 15 Increment a Number with JavaScript 16 Decrement a Number with JavaScript 每次递增1怎么弄？ a = a + 1; 每执行一次都+1。 更简单的形式 a++; 两个一样的，下面更顺手。 减法也是一样的， a--; // 这种形式只适用于加减1哦。 17 Create Decimal Numbers with J...]]></description>
            <content:encoded><![CDATA[<p>第二天，还是比较简单的基础知识，先学后教，记得牢，不费力，冲！</p><p><strong>11 Add Two Numbers with JavaScript</strong></p><p><strong>12 Subtract One Number from Another with JavaScript</strong></p><p><strong>13 Multiply Two Numbers with JavaScript</strong></p><p><strong>14 Divide One Number by Another with JavaScript</strong></p><p>来到Number这个data type。</p><p>这个很好理解，就是数字。</p><p>const a = 1;</p><p>const b = 1;</p><p>a + b = 2;</p><p>简直太简单了吧。</p><p>加减乘除一样的，都放一起了。</p><p><strong>15 Increment a Number with JavaScript</strong></p><p><strong>16 Decrement a Number with JavaScript</strong></p><p>每次递增1怎么弄？</p><p>a = a + 1;</p><p>每执行一次都+1。</p><p>更简单的形式</p><p>a++;</p><p>两个一样的，下面更顺手。</p><p>减法也是一样的，</p><p>a--;</p><p>// 这种形式只适用于加减1哦。</p><p><strong>17 Create Decimal Numbers with JavaScript</strong></p><p><strong>18 Multiply Two Decimals with JavaScript</strong></p><p><strong>19 Divide One Decimal by Another with JavaScript</strong></p><p>number当然也可以有小数点。</p><p>const a = 1.5;</p><p>const b = 4.5;</p><p>然后加减乘除。</p><p>a * b;</p><p>a / b;</p><p>// 这几关简直太水了😂。</p><p><strong>20 Finding a Remainder in JavaScript</strong></p><p>一个新符号，</p><p>%</p><p>余数的意思。</p><p>仍然是中国小学三年级就已经学过的水平😂。</p><p>const remainder = 11 % 3;</p><p>猜猜remainder这个框里装的东西是啥？</p><p>对，是2。</p><p>/ * 写到这里，我发现mirror可以用code格式。。</p><p>那接下去code部分就用code了 😊 */</p><p><strong>21 Compound Assignment With Augmented Addition</strong></p><p><strong>22 Compound Assignment With Augmented Subtraction</strong></p><p><strong>23 Compound Assignment With Augmented Multiplication</strong></p><p><strong>24 Compound Assignment With Augmented Division</strong></p><p>参考练习15 16啊，一样的，无非是1变成了任意数字。</p><p>// 太水了，这几关。。</p><p><strong>25 Escaping Literal Quotes in Strings</strong></p><p>还记得string这种data type两边要加上 “ &quot; 吗？</p><p>如果这个string variable盒子里装的东西自带 “ ” 咋办？计算机如何分辨？</p><pre data-type="codeBlock" text="const quote = &quot;Alan said, \&quot; Peter is learning JS\&quot;.&quot;;
"><code>const <span class="hljs-attr">quote</span> = <span class="hljs-string">"Alan said, \" Peter is learning JS\"."</span><span class="hljs-comment">;</span>
</code></pre><p>这行代码输出的结果是</p><pre data-type="codeBlock" text="Alan said, &quot;Peter is learning JS&quot;.
"><code>Alan said, <span class="hljs-string">"Peter is learning JS"</span>.
</code></pre><p>通过 \&quot; 这个符号组合，计算机会自动把引号认做字符，而不是string的标识。</p><p>// 这里要注意 /和\的区别，一个叫forward slash, 一个叫back slash.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/48ff56b37f21ccc902824f6bc79a13c1ef5acdd5a8cd198d58cf42e935993edd.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p><strong>26 Quoting Strings with Single Quotes</strong></p><p>除了用 \” ，也可以把外双引号换成单引号。</p><p><strong>27 Escape Sequences in Strings</strong></p><p>\ 除了标注引号，还有很多用途。</p><p><code>\&apos;</code>single quote</p><p><code>\&quot;</code>double quote</p><p><code>\\</code>backslash</p><p><code>\n</code>newline</p><p><code>\r</code>carriage return</p><p><code>\t</code>tab</p><p><code>\b</code>word boundary</p><p><code>\f</code>form feed</p><p>怎么按照格式输出这行字</p><p>FirstLine     \SecondLine ThirdLine</p><p>大家做完这个练习就能掌握\的大部分用途了。</p><p><strong>28 Concatenating Strings with Plus Operator</strong></p><p>strings 也可以拼接起来，用 +， 和number一样。</p><pre data-type="codeBlock" text="const ourStr = &quot;I come first. &quot; + &quot;I come second.&quot;;
"><code>const <span class="hljs-attr">ourStr</span> = <span class="hljs-string">"I come first. "</span> + <span class="hljs-string">"I come second."</span><span class="hljs-comment">;</span>
</code></pre><p>输出结果</p><p>I come first. I come second.</p><p>很好理解吧？</p><p>有一点要注意，如果两句话想要有个空格，空格加在第二个I之前。</p><p><strong>29 Concatenating Strings with the Plus Equals Operator</strong></p><p>和number一样的逻辑，string也可以用 += 来添加。</p><p><strong>30 Constructing Strings with Variables</strong></p><p>和number, string一样，+ 对variable也适用。</p><p><strong>31 Appending Variables to Strings</strong></p><p>好的，+= 对string, number, variables 全部适用😂。</p><p>Day2依然是最基础的内容，依然可以划水。</p><p>虽然内容简单，但概念越基础越重要，我们小白更应该掌握扎实，以后学起来就轻松。</p><p>好了，才两天，就已经完成31个练习了，完成了我们基础课程的接近1/4！胜利指日可待了。</p><p>明天见！</p><p><strong><em>btw，在这两个discord频道都可以找到我</em></strong></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://discord.gg/madnfts">https://discord.gg/madnfts</a></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://discord.gg/Z25p8gkZWx">https://discord.gg/Z25p8gkZWx</a></p>]]></content:encoded>
            <author>ashonthewall@newsletter.paragraph.com (aow)</author>
        </item>
        <item>
            <title><![CDATA[JavaScript 入门 Day 1]]></title>
            <link>https://paragraph.com/@ashonthewall/javascript-day-1</link>
            <guid>mXjL9qqsX48bl8HbscwN</guid>
            <pubDate>Tue, 08 Mar 2022 14:50:53 GMT</pubDate>
            <description><![CDATA[想要对web3开发有所了解的朋友们，JavaScript是第一步。 同样是小白，开始JavaScript学习历程的更新。 课程请教了Defi大佬，推荐这个👇，全免费，支持中英文等多种语言，学完还会颁发证书。 https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures/ Basic JavaScript一共113个小练习，做完就能掌握JS的基本概念了。 文章每小节都有对应标题的，一定要边看边练哦，不要只看。 废话不多说，我们开始第一天学习。 1 Comment Your JavaScript Code 在代码中标注，非常重要！！不然自己和别人都看不懂你在写什么。 两种标注方式，分别是// 和 / * */ // 这只能写一行标注 /* 这可以写好几行 标注了 */ 2 Declare JavaScript Variables 首先了解data是什么？一句话，data就是计算机能看懂的东西。 JS中分8种类型data，分别是： undefined, null, boolean, strin...]]></description>
            <content:encoded><![CDATA[<p>想要对web3开发有所了解的朋友们，<strong>JavaScript是第一步。</strong></p><p>同样是小白，开始JavaScript学习历程的更新。</p><p>课程请教了Defi大佬，推荐这个👇，全免费，支持中英文等多种语言，<strong>学完还会颁发证书</strong>。</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures/">https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures/</a></p><p>Basic JavaScript一共113个小练习，做完就能掌握JS的基本概念了。</p><p>文章每小节都有对应标题的，一定要边看边练哦，不要只看。</p><p>废话不多说，我们开始第一天学习。</p><p><strong>1 Comment Your JavaScript Code</strong></p><p>在代码中标注，非常重要！！不然自己和别人都看不懂你在写什么。</p><p>两种标注方式，分别是// 和 / * */</p><p>// 这只能写一行标注</p><p>/* 这可以写好几行</p><p>标注了 */</p><p><strong>2 Declare JavaScript Variables</strong></p><p>首先了解data是什么？一句话，data就是计算机能看懂的东西。</p><p>JS中分8种类型data，分别是：</p><p>undefined, null, boolean, string, symbol, bigint, number, object，现在不用都记住，只需要关注string, number 这两种data type。</p><p>var是variable的意思，对计算机来说，variable是装data的盒子，和数学里的未知数x, y一个意思。x,y可以赋值，variable也可以赋值。</p><p>输入</p><p>var myName;</p><p>// 注意：JS命令末尾一定要加“；”，这样计算机才能识别你的代码。</p><p>这样，你就创建了一个名叫myName的盒子，里面可以装叫做data的东西。</p><p><strong>3 Storing Values with the Assignment Operator</strong></p><p>往盒子里装东西。</p><p>myName = “Tony”;</p><p>// 这里的data类型是string, 需要在 “ “里面才能被识别。</p><p>这样，myName里面装的就是 “Tony” 这些字符了。</p><p><strong>4 Assigning the Value of One Variable to Another</strong></p><p>盒子里的东西是可以被复制的。</p><p>还记得myName里面是“Tony”吗？</p><p>再新增一个盒子。</p><p>var hisName;</p><p>hisName = myName;</p><p>这样，hisName这个盒子里也是“Tony“了。</p><p>// 这里注意顺序，被赋值的盒子放在前面。</p><p><strong>5 Initializing Variables with the Assignment Operator</strong></p><p>第二步和第三步可以合起来，用一行代码解决。</p><p>var myName = “Tony”；</p><p><strong>6 Declare String Variables</strong></p><p>啊，我们上面已经做了。</p><p>“Tony”就是string类data。</p><p>当然，这个string里面也可以包含空格，比如</p><p>var myName = “Tony Guy is my hair man”;</p><p>如果你的data type不是string的话，可以不加 “ ”。</p><p><strong>7 Understanding Uninitialized Variables</strong></p><p>如果你只建立一个var却不赋值，那它的value就是 NaN，也就是undefined这种data type。</p><p><strong>8 Understanding Case Sensitivity in Variables</strong></p><p>JavaScript的var名字区分大小写。</p><p>var MYVAR 和 var MyVar是不一样的。</p><p>JS的通用规则：</p><p>第一个单词的首字母小写，之后每个单词首字母大写。</p><p>比如是</p><p>var myVAR；</p><p>而不是</p><p>var MyVar；</p><p>也不是</p><p>var MYVAR；</p><p><strong>9 Explore Differences Between the var and let Keywords</strong></p><p>上面提到var的可替代性，这可能成为实际操作中的一个问题。</p><p>比如，你在代码开头定义了一个</p><p>var num = 10;</p><p>然后继续埋头写写写，把这事儿忘了，在另外一页又写了</p><p>var num = 20;</p><p>那么，你所有的num这个盒子里装的东西都会变成20。这会影响你所有的代码。</p><p>所以，在新版ES6版本的JS中，出现了一个新版本的var，它叫let。</p><p>//ES6很重要，之后课程会说。</p><p>let基本上等于只能被赋值一次的var。</p><p>所以，如果你写了</p><p>let num = 10;</p><p>然后又写了</p><p>let num = 20;</p><p>那么，计算机会报错。 这样也就解决了上述var命令重复赋值的问题。</p><p>一般来说，现在JS写代码都会用let，而不是var了。</p><p><strong>10 Declare a Read-Only Variable with the const Keyword</strong></p><p>学完了let命令，还没完。ES6还有一个新的variable形式，叫const。</p><p>怎么理解？很简单，var是可以无数次赋值和无数次改写的variable，let是可以一次赋值但无数次改写的variable，const是可以一次赋值一次改写的variable。</p><p>const pet = “Cat”;</p><p>赋值之后，就无法改了，输入</p><p>pet = “Dog”;</p><p>会显示错误。</p><p>如果你有一个恒定的数据想装到盒子里，那就用const命令吧。</p><p>好了，今天先讲这些，明天见！</p><p><strong><em>btw，在这两个discord频道都可以找到我</em></strong></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://discord.gg/madnfts">https://discord.gg/madnfts</a></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://discord.gg/Z25p8gkZWx">https://discord.gg/Z25p8gkZWx</a></p>]]></content:encoded>
            <author>ashonthewall@newsletter.paragraph.com (aow)</author>
        </item>
    </channel>
</rss>