我要做到以下幾點:如何在使用JavaScript之前定義一個變量?
if (htmlEdit) {
var dialogDiv = $('#commonDialog');
} else {
var dialogDiv = $('#commonDialog2');
}
但如果我這樣做,我認爲dialogDiv不會可用外的if-else。我如何聲明它,以便在if-else之後能夠在另一個地方使用它?
我要做到以下幾點:如何在使用JavaScript之前定義一個變量?
if (htmlEdit) {
var dialogDiv = $('#commonDialog');
} else {
var dialogDiv = $('#commonDialog2');
}
但如果我這樣做,我認爲dialogDiv不會可用外的if-else。我如何聲明它,以便在if-else之後能夠在另一個地方使用它?
你可以像這樣,
var dialogDiv;
if (htmlEdit) {
dialogDiv = $('#commonDialog');
} else {
dialogDiv = $('#commonDialog2');
}
這裏是一個很好的教程,
http://www.webdevelopersnotes.com/tutorials/javascript/global_local_variables_scope_javascript.php3
您的變量範圍內這個JS妄談它作爲全球 – 2012-03-03 06:44:09
這得到我的投票,因爲這是正確的基本這樣做的方式。但值得一提的是,一旦你脫離了學習JS的初始階段,你應該避免「全球命名空間污染」。有很多關於如何「命名空間」你的JS的文章。 – 2012-03-03 07:04:56
他的回答沒有任何內容表明這是一個全局變量,我們可以在此處嵌套十幾個函數。 – Sinetheta 2012-03-03 17:42:42
充分利用dialogDiv全局變量,所以你可以在你的項目中訪問的任何地方。甚至在你的功能外面和內部。
你也可以這樣做
function test()
{
var dialogDiv; // its use in only test function
}
If you want to declare globally than declare in script tag like this.
<script language="javascript">
var dialogDiv;
// Do your stuff below
function test()
{
if (htmlEdit) {
dialogDiv = $('#commonDialog');
} else {
dialogDiv = $('#commonDialog2');
}
}
</script>
是的,你一定能訪問它的if語句之外。 Javascript具有函數範圍,這意味着您只需跟隨最近的funciton(){},並且可以訪問裏面的所有變量。 jsfiddle
if (true) {
var dialogDiv = 'hi';
} else {
var dialogDiv = 'bye';
}
alert(dialogDiv); //alerts "hi"
實際上,當你在這樣的函數中某處聲明一個變量,它是「申報」在你的範圍的最頂部,並將其值設置在任何你想你「宣佈「它。這被稱爲提升,它沒有得到你的同意或控制,爲什麼在函數頂部聲明所有變量是一個好主意,這樣你就不會忘記你正在對這個級別進行測試。
alert(dialogDiv); //Error because dialogDiv is not defined
(function(){
alert(dialogDiv); //alerts "undefined" because dialogDiv exists here but has no value yet
if (true) {
var dialogDiv = 'hi';
} else {
var dialogDiv = 'bye';
}
alert(dialogDiv); //alerts "hi"
})()
我仍然會親自在if..else之外聲明它,即使只是聲明它爲null或空字符串。 – 2012-03-03 07:03:05
@GregPettit是的,這就是爲什麼我說「這是一個好主意,在功能頂部聲明所有變量」 – Sinetheta 2012-03-03 17:41:34
D'oh,對不起,我錯過了那句話! – 2012-03-03 20:49:34
「如果」不會創建一個閉包 – charlietfl 2012-03-03 06:42:47
你的變量範圍內這個JS妄談它作爲格洛巴 – 2012-03-03 06:44:28