我正在創建一個遊戲,並且最近閱讀了JavaScript中的匿名函數。就我的理解而言,他們包裝內容並將任何變量放在本地函數中,而不是位於全局名稱空間中。我的問題是,這是否會阻止用戶在匿名函數中編輯變量?JavaScript匿名函數可以防止客戶端編輯嗎?
我自己檢查了一下,當試圖在Chrome控制檯中更改變量'a'(從我創建的一個包含在匿名函數中的小JS文件)時,我被告知它沒有定義暗示用戶不會能夠改變他們。
這是否完全保護這些變量或玩家是否可以用其他方式編輯變量?
感謝
我正在創建一個遊戲,並且最近閱讀了JavaScript中的匿名函數。就我的理解而言,他們包裝內容並將任何變量放在本地函數中,而不是位於全局名稱空間中。我的問題是,這是否會阻止用戶在匿名函數中編輯變量?JavaScript匿名函數可以防止客戶端編輯嗎?
我自己檢查了一下,當試圖在Chrome控制檯中更改變量'a'(從我創建的一個包含在匿名函數中的小JS文件)時,我被告知它沒有定義暗示用戶不會能夠改變他們。
這是否完全保護這些變量或玩家是否可以用其他方式編輯變量?
感謝
它會幫助,但Chrome瀏覽器,例如,可以讓我開拓的開發工具和直接編輯JavaScript源。沒有辦法完全保護javascript變量。用戶將能夠改變他們想要的任何東西。通過將變量保持在本地範圍(例如使用匿名函數)並縮小代碼來使其變得更加困難。
謝謝Trevor。定時器啓動後立即接受該答案。爲了測試,我現在就把它關掉,當公開時我會把它放回匿名函數中。我更喜歡把它關掉,以便我可以測試一些變量的值... :) – jskidd3
祝你好運!正如其他人提到的那樣,使用斷點和監視表達式也可能是調試的有用方法。 https://developers.google.com/chrome-developer-tools/docs/javascript-debugging#breakpoints –
在你的匿名函數中放置一個斷點。 – Mat
什麼都不能完全保護客戶端變量 – sroes
什麼是斷點Mat?並確定感謝sroes。遊戲是多人遊戲,所以我會在服務器端驗證任何更改,只是想我會檢查。 – jskidd3