今天来教教 JavaScript 的基础语法:注解
、变数
、常数
、回圈
、条件
、函式
以及 运算
。
目的是希望至少能让你看得懂程序在做什麽,所以教学会较为简略。
有两个建议方法,则一即可:
检查
,选择 console
分页无论是哪一个方法,你都应该会找到一个打字的地方,贴上以下程序码,再按下 Enter
试试。
console.log("嗨,你好!")
你应该会看到 嗨,你好!
我建议你在学 JavaScript 时把每个范例都丢到 console 去执行看看,会比较容易理解程序在做什麽。
这段程序码
// This is JavaScript
let str = "Hello, World!";
function say(s) {
console.log(s);
}
say(str);
执行後会得到:
Hello, World!
你可能会觉得我什麽都还没说就直接给你看程序码到底是在搞什麽?
我希望你依照「由上往下执行」的原则,先花 30 秒看着它,记起来,如果可以则试着理解它。
记好了吗?
其实过程就是:
试着把 变数
和 参数
代换看看,这段程序其实就是执行:
console.log("Hello, World!");
然後 console 就会出现 Hello, World!
了!
如果你还是不太能想像程序执行的过程,可以把程序码贴到 console 试试。
我们在上面提到了几个东西:注解
、变数
、函式
,接下来就让我们进入主题吧!
/* 我
是
多行
注解*/
let a = 1; // 我是单行注解
JavaScript 中的注解有两种:
单行注解
单行注解用 //
表示,其右边的部分就是注解。
多行注解
多行注解用 /*
当作起头, */
当作结尾,其中间的所有东西都是注解
let a = true; // 布林值 bool
let b = 100; // 数字 number
let c = "一串字"; // 字串 string
let d = [ 10, 20, 30, "Hi", true ]; // 阵列 array
let e = { name: "Tom", age: 1000 }; // 物件 object
JavaScript 中的 let
可用来宣告变数。
// 宣告
let 变数名称 = 初始值
// 修改
变数名称 = 新的值
let
宣告的变数范围是在 {}
之内,意即你在某 {}
内宣告的变数,只能在该 {}
中存取{}
中变数名称是唯一的,不可重复宣告补充:
- 你可能看过
var
,它也是宣告变数,但作用域只受 file block 及 function block 影响。- 其实 array 的类型也是 object,可想成
{0: val1, 1: val2, ...}
- 你可能会想读读 typeof 来看看各种变数的类型
const name = "Charlie"; // 不可修改
常数使用 const
宣告,其与变数类似,但宣告後即不得修改。
有趣的是,如果你宣告参数为 object
型态,其里面的东西是可以改的。
const obj = {
x: 100
};
const arr = [];
// 这是允许的
obj.x = 500;
arr.push(true);
// i++ 就等於 i += 1 ,也就是把 i 加一
for(let i = 0; i < 10; i++) {
console.log(i);
}
while(true) {
console.log("Infinite Loop");
}
回圈就是一直重复执行 {}
中的动作。
FOR LOOP 的构成如下:
for(一开始要做的事; 继续的条件; 每次完成後做的事) {
// 做其他事
}
一开始要做的事
会在进入回圈前执行一次,
然後检查 继续的条件
是否成立,成立就执行内部的东西,反之则跳出。
每次跑完内部的事情时,会先执行 每次完成後做的事
再做下一轮的检查。
WHILE LOOP 就更简单了:
while(继续的条件) {
// 做事
}
检查 继续的条件
是否成立,成立就执行内部的东西,反之则跳出。一直循环直到跳出。
for(let i = 0; i < 100; i++) {
console.log(i);
break;
}
for(let i = 0; i < 100; i++) {
if(i % 2 === 1) continue;
console.log(i);
}
break
会跳出整个回圈。
continue
则跳过一次循环。
// Math.random() 会随机产生 0 ~ 1 的数
// 所以这有 1/2 的机会执行
if(Math.random() < 0.5) {
console.log("符合条件");
}
if 条件就像是 while 回圈,但只执行一次 (符合条件) 或零次 (不符合条件)。
let r = Math.random();
// if else
if(r < 1/3) {
} else if(r < 2/3) {
} else {
}
let a = Math.floor(Math.random() * 3) // 可能会是 0 or 1 or 2
// switch
switch(r) {
case 0:
...
break;
case 1:
...
break;
case 2:
...
break;
}
// 宣告一个叫 sum 的函式
function sum(number1, number2) {
return number1 + number2;
}
// 这个跟上面基本上是相同的
let sum = (n1, n2) => n1 + n2;
函式其实就是一连串的动作,以及做动作所需的东西 (参数)。
// 函式宣告
function 函式名称(参数以逗点分隔) {
/*
做的事情
可以很多
*/
return 回传值
}
()
内的是参数,{}
内的是动作。
function
有一点需要注意:它会在 block ({}
) 中上浮。什麽意思呢?
就是 function abc () {}
写在後面时 (例如第 1481 行),可以在前面 (例如第 114 行) 呼叫执行。
就像是提前至 function abc () {}
所在 block 的最上面先宣告。
名称 = (参数以逗点分隔) => 回传值
看起来比较简洁,但如果搞不清楚
this
不要乱用
function(...) { ... }
没有名字,常在做为参数代入其他函式时使用
async function () {}
async () => {}
这个东西是非同步函式,它很特别会回传 Promise
,明天会说。
运算其实很直观:
let a = 10, b = 10;
a + 1;
console.log(a);
a = a + 1; // a += 1
console.log(a);
b++;
console.log(b);
唯一要注意的,就是运算本身是不会影响到原本的变数的,还需要赋值 (=
)。
常用的算数运算子有 +
-
*
/
,顺便赋值的有 +=
-=
*=
/=
,可以自己玩玩看。
比较运算子有 <
<=
>
>=
==
===
。
其中较需要解释的是 ==
与 ===
的差异,两者对於不同型别之间的比较会有不同结果,===
比较严格, ==
比较宽松。
console.log(1 == "1"); // true
console.log(1 === "1"); // false
另外需要知道的是 ||
表示 or
、&&
表示 and
现在有个概念就好,之後实际用到时就会比较容易了解了。
;
不是必要的,但我比较习惯加上。因为目的是「看懂」程序,内容有些过度简化的部分,如果想要深入理解,在这提供两个资料网站给有兴趣的人:
依经验来看,多看看程序码与范例,你就会写了。这两个网站都是很好的学习资源。
请留言跟我说,这是我第一次写教学文,一定有一大堆需要改进的地方。
如果对於内容有疑问,我一定会尽可能回覆。
以 9/15 12:00 ~ 9/16 12:00 文章观看数增加值排名
+297
[Day14] 家里WiFi被妈妈锁了怎麽办? 教你用Python破解WiFi密码 !
+213
[Day13] 抢 PS5 程序怎麽写? 动态爬虫详细教学!
+212
[Day15] 明天是女友的生日却忘记准备礼物? 教你三秒做出爱心照片墙!
+190
[Angular 深入浅出三十天:表单与测试] Day01 - 前言
+167
卡夫卡的藏书阁【Book1】- 大纲和Kafka基础介绍
+158
D14 第七周 前端基础 JavaScript
+155
Day-1 : Hello Wali 起手式
+148
Day15 - WooCommerce 金流串接实战
+142
[Day11] 打完疫苗睡死要怎麽发文? 让程序帮你完成铁人赛!
+131
[Day9] 记得色情守门员吗? 教你用Python做简易版守门员!
原本想再报一个自我挑战组每天发的,但发现报名时间已经过了...
NIST出版物 NIST制定并维护了大量有关信息和信息系统的安全性和隐私性的标准,指南,建议和研究。...
我们接续上一篇完成一些未完成的功能。 完成按钮 & 返回按钮 这两个按钮在整个篇章中,属於比...
浮点数的二进位表达方法 浮点运算知识点 小数二进制表达 与整数的二进制表达相同我们可以假设任意小数的...
在上一篇文章我们建立 Channel 时,使用 Channel<E>() 来建立一个 C...
前言 在this All Makes Sense Now! [上]中我们介绍了什麽是call-sit...