一般我所知道的樣板字面值為以下
const name = 'Jack'
const string = `你好我是${name}`
console.log(string) // 你好我是Jack
const string = `你好我是${name || 'May'}`
console.log(string) // 你好我是May
const string = `你好我是${name ? name:'May'}`
console.log(string)
let name = 'Jay'
const string = `你好我是${name = 'May'}`
console.log(string) // May
const obj = {
name: 'Jay'
}
// 把obj內的name屬性改為不可寫入
Object.defineProperty(obj, 'name',{
writable:false
})
const string1 = `你好我是${obj.name = 'May'}`
// 可以看到這個時候的樣板字面值輸出的數值是 obj.name = 'May' 這個表達式的值,也就是'May'
console.log(string1) // 你好我是May
console.log(obj.name) // Jay
樣板字面值內部可以放入立即函式,但是立即函式也需要式表達式才行
const name = 'Jay'
const money = 500
const string = `我是${name},原來我有${money},後來變成了${(() => money * 2)()}`
console.log(string) // "我是Jay,原來我有500,後來變成了1000"
簡單的來說,可以把樣板字面值的字串,與變數分離。
function fn(string, ...par) {
console.log('string:',string)
console.log('pars:', par)
}
const name = 'Jay'
const money = 500
fn`我是${name},我現在有 ${money}`
// string: ['我是', ',我現在有 ', '', raw: Array(3)]
// pars: ['Jay', 500]
拿以上範例來說我想要在變數加上span例如 <span>Jay</span>
function fn(strings, ...pars) {
//console.log('strings:', strings)
//console.log('par:', pars)
// 這裡的srtgin與pars都會以array的方式呈現,所以可以使用forEach組成新的字串
// 要注意在樣板字面值使用三元運算子內容有結果的地方有變數家字串的話需要使用``圍起來
const all = `${strings.map((string, i) => `${string}${pars[i]? `<span>${pars[i]}</span>`:''}`).join('')}`
console.log(all)
}
const name = 'Jay'
const money = 500
fn`我是${name}我現在有${money}` //"我是<span>Jay</span>我現在有<span>500</span>"
這是我決定轉職的最後推手,考績優,但年終獎金只有本薪(24400)的0.5個月,沒錯我只拿0.5個月這種我認為是汙辱性的獎金,工作越來越多我認了、越來越賽我認了但最後換這種嘲諷式的獎金,為什麼是嘲諷呢?經過打聽考績甲的年終都有一個月,只有我考績打優拿0.5個月,最後在過年後的一個月提出離職,這個時候就可以真實的知到你的職位是不是真的重要,如果真的重要,當你發出離職宣告的隔天甚至當下就會有1-2的背後靈貼在你身邊,然後不斷的榨取你身上所有一切對工作的資訊,這種情況有發生在我身上嗎?沒有,原來經理與副經理還有老闆常說風險評估很重要都是場唬爛,對他們來說風險評估文件就像是國小學生要檢查手帕一樣,風險評估文件就是那個手帕,我提離職時也沒人主動來交接我的工作,還是我自己列出百來項的交接清單,以及各事項的流程、現在的進度及未來的方向後拍拍屁股走人啦,後來聽說來了幾個人接了我的位置不過都做不到3個月就走了,至今那樣產品依舊未上市。