于很多剛從Java學習過渡到JavaScript學習的同學來說在定義方法的問題上最頭疼,我們Java人員來學習JavaScript是非常容易上手的,因為語法大部分都相同。但是定義方法是個例外,JavaScript中沒有方法重載的概念,匹配方法只去比較方法名,這跟Java大相徑庭。今天我們來剖析一下這個問題, 既然JavaScript中沒有重載的概念,那么我們定義兩個方法名相同的方法,會出現什么問題呢?
<script >
function calc(a , b){
alert(a + b);
}
calc(1,2);
function calc() {
alert("空參方法");
}
calc();
</script>
這里一執行會彈出兩個空參方法,而不是一個3和一個空參方法。
這是因為在JavaScript中如果定義的方法名相同,下面的會將上面的覆蓋掉。
以上是具名方法聲明的方法,我們如果用具名和匿名方法分別聲明相同的方法名的方法會是一種什么樣的情況呢?
<script >
function calc(a , b){
alert(a + b);
}
calc(1,2);
var calc = function(){
alert("空參方法");
}
calc();
</script>
出乎我們意料,竟然彈了個3又彈了個空參方法,好像互相不影響。
那請看下面這種情況:
<script >
function calc(a , b){
alert(a + b);
}
calc(1,2);
var calc = function(){
alert("空參方法");
}
calc();
function calc(a , b){
alert(a - b);
}
calc(1,2);
</script>
為什么會是這樣一個順序呢?第三個方法會將第一個方法覆蓋掉,這個現象大家能理解。 但為什么第二個方法會將第三個方法覆蓋掉呢?
是因為匿名方式聲明的方法。只有在調用的時候才真正的被加載上。而具名方法在加載之前就會將相同的方法覆蓋掉。所以在加載之前第三個方法會將第一個方法覆蓋掉。所以先彈出了一個"-1"/接著執行到了匿名方法。也就是第二個方法。這時候這個方法才加載到內存中。所以會將已經加載好的第三個方法覆蓋掉。
推薦學習視頻:JavaScript教程_JavaScript視頻教程|黑馬程序員
者 | Rachel Andrew,Web 開發者
譯者 | 羅昭成
責編 | 沭 七
出品 | CSDN(ID:CSDNnews)
所有的人再一次對 CSS 失望。我不打算去總結這些讓人失望的點。事實上,CSS 太容易被覆蓋修改,如果要讓它實時生效,你需要將它用 JavaScript 包裹起來。你可以在《The Great Divide》文章中看到更好的思路。
在我們的技術棧中,有關于工具、框架和技術相關的描述。我在前端和 Web 服務端工作了將近 20 年,我看到它們在不停地轉換。事實上,標準的技術有它自有的局限性,當我們遇到問題,我們會想辦法解決問題。通常,我們會拋棄舊的東西,使用新的方法來解決問題。舊的東西很糟糕,當我們找不到更好的東西時,我們會用我們的知識,發明新的輪子,讓工作更輕松。
我們在數據領域可以看到,人們通常會避免使用關系數據庫來完成需求,盡管你是真的需要關系數據庫。
我們可以看到以靜態頁面驅動的網站,經常會將速度與缺乏數據庫混為一談,并且最終會在文件系統中創建數據或者依靠大量的第三方插件來填充原需要使用傳統 CMS 處理的內容。
在上述兩種場景中,都可以使用關系數據庫管理系統來實現,靜態頁面可以更好的適配待發布的內容。這是一個針對特定問題的最佳實踐。然而,在很多情況下,采用新技術或其它技術會讓項目陷入混亂 ,最終必須花費昂貴的代價進行重構/重寫。
以前穩定運行的輪子,需要我們去改造。我們樂觀的希望有更好的東西來替換這些舊的東西,但并沒有,而是一團糟。由于使用了新的技術棧,只有少數人了解他,整個團隊沒有人能修復項目中的問題。企業交給外包公司開發的網站,所使用的技術會很快的落伍,當企業想升級網站時,下一個外包公司就會建議重建網站。
然而,當我們談論到構建圍繞 HTML 和 CSS 的框架時,不得不讓企業拋棄之前幾年工作創建的內容,并且,有一些使用不當的框架,無法兼容。
以上我們談論的 HTML 和 CSS ,都會影響職業的切入點。無論是前端還是后端,我們中的很多人并沒有計算機科學的專業背景,HTML 和 CSS 入門很簡單,很方便就能夠看到自己的代碼在網頁上顯示,這個很神奇。我們已經失去了很多切入點,現在沒有人在論壇上教授 HTML 和 CSS 如何去制作家庭相冊。這些人現在開始使用 Facebook ,或者使用 wordpress/SquareSpace 創建的標準博客。我們沒有他們的個人主頁,也沒有通過 Neopets 來學習 HTML 。現在很少有人進入這個行業,尤其是女性,因為管理網站現在被認為是管理員的職責,并且需要學習 HTML。
對于非傳統教育畢業的人,切入點就是培訓班。培訓班通常教授的是框架式開發方式,讓學生們學習這些技術,并快速的找到工作。在這些培訓的人中,我發現他們有一個共同的問題,他們的基礎知識薄弱,如果把這些新人招募進來,并把他們放在不能填補基礎知識的環境中,就會對他們造成極大的傷害。因為我的 HTML 和 CSS 基礎知識扎實,所以我能很快的適應各種不同的網站構建方式。從以前的經驗中,我能很輕松的掌握建立在他們之上的工具并且快速切換。
值得注意的是,在過去的 20 年里,我們創造了所有的東西,我依然可以使用簡單的 HTML 和 CSS 教導一個初學者,并且讓他們能夠在一天內使用 HTML 和 CSS 創建一個簡單的網頁。我們不需要談論框架和工具,如何發送請求,如何通過 npm 將代碼庫拉到本地并運行。我們只需要一個文本編輯器,和幾個小時。將我們要顯示的內容顯示到網頁上。
如果您在項目中遇到了問題,并且有解決這些問題的方案,或者可以使用 JavaScript 解決這些問題,非常好!我們很多從事 CSS 工作的人都想要聽到你的建議。如果,你告訴我,你并沒有深入學習過 CSS,在你要替換他們時,你想聽取我的建議,我并不能給你實質性的建議,因為我不知道你最開始使用的是什么框架。也就是說,我無法幫助你建立我不了解的程序。
我或許是一個“老古董“程序員,但如果這讓你認為我無法學習 React 或者其它框架,那么你錯了。如果是 22 歲的我,看到那些東西,我也會逃跑。如果我們要學習這些,你必須開始理解編程,我們采取一些開放式的方式,并將其放在已經享有特權的人手中,讓足夠多的人支持我。
英文原文:HTML, CSS and our vanishing industry entry points
鏈接:https://rachelandrew.co.uk/archives/2019/01/30/html-css-and-our-vanishing-industry-entry-points/
本文為 CSDN 翻譯,如需轉載,請注明來源出處。
先,禁用 JavaScript 可以通過設置 window.disableJavascript 屬性為 true 來實現。你可以在瀏覽器的開發者工具中執行以下代碼來禁用 JavaScript:
window.disableJavascript = true;
然而,這種方法會徹底禁用網頁中的所有 JavaScript,包括復制、粘貼和其他交互功能,這顯然不是一個好的用戶體驗。
然而,這種方法會徹底禁用網頁中的所有 JavaScript,包括復制、粘貼和其他交互功能,這顯然不是一個好的用戶體驗。
相比之下,如果只想禁用頁面中某些 JavaScript 功能,可以使用以下兩種方法:
1. 禁用特定的 JavaScript 代碼塊
可以在頁面中標記出需要禁用的 JavaScript 代碼塊,并在用戶點擊禁用按鈕時動態地添加一個帶有 disabled 屬性的 script 標簽來禁用這些代碼塊。以下是一個示例:
<script>
function disableJavaScriptBlocks() {
const blocksToDisable = document.querySelectorAll('.js-disabled');
for (const block of blocksToDisable) {
const script = document.createElement('script');
script.setAttribute('disabled', 'true');
script.textContent = block.textContent;
block.parentNode.replaceChild(script, block);
}
}
</script>
<button onclick="disableJavaScriptBlocks()">禁用 JavaScript</button>
<div class="js-disabled">
這是需要禁用的 JavaScript 代碼塊。
</div>
這個示例中,我們定義了一個 disableJavaScriptBlocks 函數來禁用頁面中帶有 js-disabled 類的 JavaScript 代碼塊。當用戶點擊禁用按鈕時,這個函數會遍歷頁面中所有帶有 js-disabled 類的元素,并為每個元素動態地創建一個帶有 disabled 屬性的 script 標簽來禁用這些代碼塊。
2. 替換特定的 JavaScript 函數
如果只想禁用某個 JavaScript 函數,可以動態地替換這個函數。以下是一個示例:
<script>
function disableCopy() {
const originalCopy = document.execCommand;
document.execCommand = function(command) {
if (command === 'copy') {
console.log('禁止復制!');
return false;
}
return originalCopy.apply(this, arguments);
};
}
</script>
<button onclick="disableCopy()">禁用復制</button>
這個示例中,我們定義了一個 disableCopy 函數來禁用頁面中的復制功能。當用戶點擊禁用按鈕時,這個函數會動態地替換 document.execCommand 函數,如果用戶嘗試執行 copy 命令,它會輸出一條提示信息并返回 false,從而阻止復制操作。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。