打開網頁,就會跳出alert 顯示「35」這個數字了. 更改變數的值 ‼️ 同一個變數, var 只需要“寫一次”. 現在,我要把「變數 cookiePrice 」的值,改 ... ... <看更多>
html alert變數 在 使用window.alert() | 他山教程,只選擇最優質的自學材料 的推薦與評價
alert 方法在技術上是 window 物件的屬性,但由於所有 window 屬性都是自動全域性變數,我們可以使用 alert 作為全域性變數而不是 window 的屬性- 這 ... ... <看更多>
html alert變數 在 [心得] [ js ] 減少使用全域變數- 看板Ajax 的推薦與評價
最近的一些Javascript心得,把他寫成了筆記
來這邊分享一下,如果有什麼觀念錯誤的地方歡迎指正 ^^||
網頁好讀版: https://disp.cc/b/11-4CrK
在 JavaScript 中存取一個變數時
會先尋找目前的區域變數中有沒有這個變數,沒有的話再往上一層區域找
最後才會找全域變數,也就是 window 下的變數
例如
a = 1; // 全域變數a
b = 2; // 全域變數b
function myfun(){
var a = 3; //區域變數a
alert('a:'+a+',b:'+b); //會顯示 a:3,b:2
}
myfun(); // 執行
以往偷懶的寫法,都是把一堆需要跨函式的變數都設成全域變數
每個函式的名稱也都是全域變數
但這樣每次存取就都要一層一層的往上找直到全域範圍
而全域範圍已經有很多東西了,再加上一堆東西的話會造成效能不佳
且有可能會跟其他載入的 script 裡的名稱有衝突
所以比較好的方法是把自己的程式全都用一個立即執行的匿名函式包起來
並且把函式的名稱都改用區域變數來存
(function(){
var a = 1;
var b = 2;
var myfun = function(){
var a = 3; //區域變數a
alert('a:'+a+',b:'+b); //會顯示 a:3,b:2
}
myfun(); // 執行
})();
其中立即執行的匿名函式
(function(){ /*...*/ })();
也可以看成像下面這樣
function init(){ /*...*/ };
init();
宣告一個 init 函式後立即執行
簡寫成匿名函式的話就不用再幫他取名字了
也可以把 window 物件也傳進去變成一個區域變數 window
就可以用這個區域變數來存取其他全域變數了
例如可以讀取 jQuery 的 $ 變數
然後把 $ 也變成區域變數
(function(window){ //用區域變數 window 來存 全域變數 window
var $ = window.jQuery; // 把 jQuery 的 $ 變成區域變數
//...
})(window); //傳入全域變數 window
對物件使用"="傳給另一個值時,是使用傳址的方式,而不是傳值
所以只是同一個物件變成有兩個名字,而不會複製成另一個物件
a = {};
a.x = 1;
b = a;
b.x = 2;
alert(a.x); //顯示 2
alert(b.x); //顯示 2
把程式全部包在一個匿名函式後
就不能在 HTML 中使用 onclick 執行自己寫的函式了
<a href="#" id="myBtn" onclick="myfun(); return false;">按鈕1</a>
這樣的按鈕點下去會出現"myfun() is not defined"
要改成綁定事件的寫法
(function(){
$('#myBtn').click(function(){
//點按鈕後要執行的事情
myfun();
});
var myfun = function(){ /*...*/ };
})();
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 175.181.51.65
※ 編輯: knuckles 來自: 175.181.51.65 (10/22 15:15)
... <看更多>