iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 3
1

一些關於 JS 的神秘事件,往往是我們能持續學習,
並繼續鑽研下去的動力。以下四個例子

  1. 一個物件資料,想要複製同樣的格式給下一個人,並修改,結果被更動到了原本的人的格式。
var Jim = {
favMovie: "LaLaLand",
favBook: "The Hitchhiker's Guide to the Galaxy"
}

var Albert = Jim
Albert.favMovie = "Fight Club"

console.log(Jim.favMovie)
//結果:"Fight Club"
  1. 宣告成常數(不可再指定值給此變數名稱)的陣列,還可以進行資料的修改
const arr = [1, 2, 3]

arr.push(4)
//結果:(4) [1, 2, 3, 4]
  1. 函式沒有傳入參數,卻有這個變數可以用?回傳的這是啥
function hello () {
  console.log(arguments)
}
undefined
hello('echoooo')
結果:Arguments ["echoooo", callee: ƒ, Symbol(Symbol.iterator): ƒ]
  1. this是“這”的意思嗎?this到底指到哪裏?
var obj = {
  sayHi: "How are you?",
  sayHello: function(){
     console.log(this.sayHi)
  }
}

function sayHello(obj) {
  console.log(this)
  obj.sayHello()
}

sayHello(obj);

結果:
Window {postMessage: ƒ, blur: ƒ, focus: ƒ, close: ƒ, frames: Window, …}
VM1856:4 How are you?

想知道答案通常就必須更了解語言背後的特性,也往往難以一言以敝之,需要搭配理論、實作與推導的過程。
從好奇開始,之後我們了解更多便能更接近這些神秘問題的答案!


上一篇
一個 JS 學習者的日常 day1
下一篇
一個 JS 學習者的日常 day3
系列文
一個 JS 學習者的日常30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言