2018年9月12日 星期三

【JavaScript】兩種函式宣告的差別——聲明的提前 var a = function () {} & function a(){}


var a = function () {….} :Expression

・這種寫法應該比較穩定
var hereOrThere = function () { // 表達式
    return 'here';
};

console.log(hereOrThere()); // console'here'

hereOrThere = function () {
    return 'there';
};
(聲明提前)
var hereOrThere  //聲明提前

hereOrThere=function () { // 表達式
    return 'here';
};

console.log(hereOrThere()); // console 'here'

hereOrThere = function () {
    return 'there';
};

function a() {….}:statement

  • function a () {…} 是一種聲明,因此會提前
function hereOrThere() { 
    return 'here';
}

console.log(hereOrThere()); // console 'there'

function hereOrThere() { 
    return 'there';
}
(聲明提前)

function hereOrThere() {
    return 'here';
}

function hereOrThere() {  //聲明提前
    return 'there';
}

console.log(hereOrThere()); // console 'there'

推薦文章:JavaScript中對變量和函數聲明的“提前(hoist)”

【JavaScript】Var、Let、Const的不同


VAR

  • var如果再function裡面,就只會存在於function裡面(如果只是單純的大括號依然會跑去)
  • var如果再function外面,就會變成全域變數
  • var可以被覆寫
function say() {
    var a = 123;
 }
 console.log(a) //undefined
var price = 100;
if (price > 3) {
    var discount = 0.7 * price;
//這裡的Var雖然在大括號裡面,但並不是在function裡面
}
 console.log(discount) //70

let

  • let只會存在block大括號當中
  • let可以被覆寫
var price = 100;
if (price > 3) {
    let discount = 0.7 * price;
//這裡的let只會存在於block當中
}
 console.log(discount) //Undefined

const

  • const只會存在block大括號當中
  • const不可以被覆寫

【JavaScript】文字中串JS & JS碼中串HTML的好方法


文字中串JS

Literal Template

  • ES6才有支援
  • 注意符號不是’而是`(鍵盤左上角)
var a = 10
var b = 20
console.log(` 加起來是${a+b} `)

JS碼中串HTML

//1.先用一個Javascript把HTML放進來
 <script type="text/template" id="html_template">  html..... </script>
//2.把HTML取出來,然後再給函式使用
var html = document.getElementById('html_template').innerHTML //取出HTML

偶個函式: function () {

                            infoWindow: {
                                content: html 

                            }
                    });

2018年9月6日 星期四

【JavaScript】物件轉陣列 Object.values


物件轉陣列

const object1 = {
  a: 'somestring',
  b: 42,
  c: false
};
console.log(Object.values(object1));
// Array [“somestring”, 42, false]