Reference: 從ES6規範看JavaScript的現在和未來
和 C++ 有 87% 像
console.log() 可以看做輸出
Windows | Mac OS | |
---|---|---|
Chrome | Ctrl + Shift + I | Cmd + Opt + I |
Firefox | Ctrl + Shift + K | Cmd + Opt + K |
// 單行註解
/*
多行註解
*/
/* 巢狀註解 /* 會 */ 爛掉 */
var i;
var a = 2;
var tw = "台灣";
檢查變數型別:typeof 運算子
true + 0
true + true
'77' - 7
0、-0
Infinity、-Infinity
NaN
算術運算子:+ - * / % ++ --
比較運算子:< > <= >= == != === !==
== vs. ===
邏輯運算子:&& || !
位元運算子:& | ^ ! << >>
指定運算子:= += -= *= /= %= ...
用單引號或雙引號包著
var str = '我是字串';
var str2 = "我也是";
字串建立就不可修改
取得字元
var str = 'abcd';
console.log(str[0]); // index 從 0 開始
typeof null // bug in ECMAScript
typeof undefined
null === undefined
null == undefined
NaN === NaN;
Number.NaN === NaN;
isNaN(NaN);
isNaN(Number.NaN);
檢查 NaN:isNaN()函式
// if 結構
if (child === '狂') {
result = '開噴';
}
// if-else 結構
if (child === '神亦') {
result = '1600 萬台戰';
}
else {
result = '單機遊戲';
}
// if-elseif 結構
if (door !== '打開') {
result = '沒事';
}
else if (husband === '睡在床上') {
door = '關起來';
result = '假的!';
}
else {
eye = '業障重';
}
while 敘述
/*
while 敘述
若 rich 是 true
則輸出 '一直丸'
*/
while (rich === true) {
console.log('一直丸');
}
for 敘述
console.log('讓我們默哀 10 秒');
/*
for 敘述
用迴圈計數
*/
for (var i = 1; i <= 10; i++) {
console.log(i);
}
break
continue
do ... while
基本功能介紹
+ 運算子
"3" + 1
"3" - 1
"3" - -"1"
給一個英文句子,請把句子第一個字母變大寫,其餘變小寫
用中括號 [] 包著 , 隔開元素
陣列長度 arr.length
[] == ''
[''] == ''
[] == ['']
[] == []
[] == ![]
判斷陣列:Array.isArray()
typeof [1, 2, 3]
加入元素:arr.push(元素1, ...)
刪除元素:arr.pop()
串接元素:arr.join(separator)
合併陣列:arr.concat(陣列1, ...)
取子陣列:arr.slice(start, end)
拔掉第一個元素:arr.shift()
參考:所有陣列方法
給一篇文章,每個句子由 . 結束,將每個句子第一個字母改為大寫,其餘改為小寫。
str.split(separator)
宣告方法一
宣告方法二
function 函數名 (參數們) {
// 函數內容
}
var 函數名 = function (參數們) {
// 函數內容
}
在 javascript 中,這種做法被廣泛使用
arr.reduce(function(prev, num) {
return prev + num
})
陣列元素加總
建質數表
開根號:Math.sqrt()
合併排序法 (遞迴)
var 透天厝 = {};
透天厝['一樓'] = '店面';
透天厝['二樓'] = '住家';
透天厝['頂樓'] = '不加蓋';
console.log(透天厝);
var 透天厝 = {
一樓: '店面',
二樓: '住家',
頂樓: '不加蓋'
};
console.log(透天厝);
var 透天厝 = {};
透天厝.一樓 = '店面';
透天厝.二樓 = '住家';
透天厝.頂樓 = '不加蓋';
console.log(透天厝);
可以用this來獲得物件的屬性
// 測試看看
console.log({} === {})
// 試試看
var a = {};
var b = a;
console.log(b === a)
b.xd = 1;
console.log(a);
// 建構子
function Circle(x) {
this.radius = x; // 用 this 指派屬性值
this.area = function area() { // 設定方法
return this.radius * this.radius * 3.14;
}
}
var c1 = new Circle(3); // 半徑為 3 的圓
var c2 = new Circle(0xC8763); // 半徑為 0xC8763 的圓
c1.area();
c2.area();
所有函式都有 prototype
javascript 當中所有東西都有物件
計算現在時間和 2000/1/1 之間有幾秒
注意函式和建構子的差異
檢查 key 值是否有在物件內
var obj = {
scientist: '鳳凰院',
assistant: 'Christina'
}
0 in obj; // false
'scientist' in obj; // true
// array 事實上是物件模擬
var arr = [4, 2, 6]
arr['XD'] = '哈哈你找不到我';
2 in arr; // true, index 2
4 in arr; // false
'XD' in arr; // true
for ... in 敘述:遍歷物件的 key
var arr = [4, 2, 6]
arr['XD'] = '哈哈你找不到我';
for (var i in arr) {
console.log(i); // 0, 1, 2, XD
}
Truthy 陣營
Falsy 陣營
true
false
[] == true // false
[] == false // true
if ([]) {
console.log('QQ');
}
else {
console.log('XD');
}
Number.MAX_VALUE*1.0000000000000001 === (1/0) // false
Number.MAX_VALUE*1.0000000000000002 === (1/0) // true
[] == 0 // true
+[] === 0 // true
++[] === 0 // ReferenceError
[[]][0] === 0 // true
++[[]][0] === 1 // true, wtf
++[[]][+[]] === 1 // true, yay
console.log(typeof null == 'undefined'); // false
for (var i = 0; i < 100000; i++)
console.log(typeof null == 'undefined'); // wtf