|
|
|
|
|
void 這個術(shù)語在編程中使用時,指的是“無”的返回 - 可以說是“空值”。當函數(shù)為空時,意味著該函數(shù)不返回任何內(nèi)容。這類似于 JavaScript 中undefined
顯式返回的函數(shù),如下所示:
function und() {
return undefined
}
und()
或隱含地,像這樣:
function und() {
}
und()
無論上述函數(shù)中的表達式和語句如何,都沒有返回結(jié)果。
那么,什么是 javascript:void(0) 呢?
如果我們把它分開,我們有javascript:
和void(0)
。讓我們更詳細地看一下每個部分。
javascript:
這稱為偽 URL。當瀏覽器接收到此值作為href錨標記上的值時,它會解釋冒號 (:) 后面的 JS 代碼,而不是將該值視為引用路徑。
例如:
<a href="javascript:console.log('javascript');alert('javascript')">Link</a>
單擊“鏈接”時,結(jié)果如下:
如上所示,瀏覽器不會將其href視為引用路徑。相反,它將其視為一些 JavaScript 代碼,以“javascript:
”開頭并以分號分隔。
void(0)
void
運算符計算給定的表達式并返回undefined
。
例如:
const result = void(1 + 1);
console.log(result);
// undefined
1 + 1
被評估但undefined
被返回。為了證實這一點,這是另一個例子:
<body>
<h1>Heading</h1>
<script>
void(document.body.style.backgroundColor = 'red',
document.body.style.color = 'white'
)
</script>
</body>
上面代碼的結(jié)果是:
這是另一個例子:
console.log(void(0) === undefined)
// true
結(jié)合javascript:
和void(0)
有時,你不希望鏈接導(dǎo)航到另一個頁面或重新加載頁面。使用javascript:
,你可以運行不會更改當前頁面的代碼。
這與void(0)
一起使用,什么都不做- 不要重新加載,不要導(dǎo)航,不要運行任何代碼。
例如:
<a href="javascript:void(0)">Link</a>
“鏈接”一詞被瀏覽器視為鏈接。例如,它是可聚焦的,但它不會導(dǎo)航到新頁面。
0
是一個傳遞給void
的參數(shù),它什么都不做,什么都不返回。
JavaScript 代碼(如上所示)也可以作為參數(shù)傳遞給void
方法。這使得鏈接元素運行一些代碼,但它維護相同的頁面。
例如:
<a id='link' href="javascript:void(
document.querySelector('#link').style.color = 'green'
)">Link</a>
單擊按鈕時,結(jié)果如下:
使用void
,它告訴瀏覽器不要返回任何東西(或 return undefined)。
帶有javascript:void(0)
引用的鏈接的另一個用例是,有時鏈接可能會在后臺運行一些 JavaScript 代碼,而導(dǎo)航可能是不必要的。在這種情況下,表達式將用作傳遞給void
的參數(shù)。
結(jié)論
在這篇簡化的文章中,我們了解了void
運算符是什么、它是如何工作的,以及它如何與鏈接屬性的javascript:
偽 URL一起使用href。
這可確保頁面在單擊時不會導(dǎo)航到另一個頁面或重新加載當前頁面。