原创 關於我在360筆試中做到的一道毀三觀的題(函數與變量同名)

昨天在答360筆試的時候,遇到這樣一道毀三觀的題; var a = 3; function a(){}; console.log(type a); 看到這段代碼,你的第一反應是他應該輸出什麼!   我當時毫不猶豫,內心堅定無比的

原创 Ajax

  Ajax是一種異步加載,部分更新的技術。 如:填寫表單時,郵箱格式錯誤,用戶名已存在等,會在你輸入完成後就時事的提醒你,而不需要點擊提交,刷新整個頁面以後才告訴你。 這就是Ajax的牛逼之處:無刷新數據讀取   網頁的展

原创 jQuery.index()

index()函數用於獲取當前jQuery對象中指定DOM元素的索引值 語法:    jQueryObject.index( [ object ] ) 參數:    object: 可選/String/Element/

原创 JS預解析

  首先我們先來說一下js的解析順序。js引擎讀取一段js代碼,首先會進行預解析,也就是從上往下逐行讀取代碼,尋找所有的var和function(這個後面會詳細解釋)。當預解析完成後,js引擎在從第一行開始逐行運行js代碼。  

原创 setTimeout中的閉包

我們直接舉栗子說問題。 for (var i = 0; i < 5; i++) { setTimeout(function() { console.log(i); }, 1000 * i); } 結果:開始輸出一個

原创 瀏覽器的重排與重繪

  瀏覽器要顯示一個完整的頁面,是一個複雜的過程,這裏包含了重繪和重排。顯示頁面之前,瀏覽器需加載完頁面中的所有組件——HTML標記、JavaScript、CSS、圖片。加載完之後會解析生成兩個內部數據結構——DOM樹和渲染樹。

原创 This

本文不繫統講解,只解釋幾個特殊例子。 <script> var obj={ name:"mao", ftn00:(function(){ console.log(this

原创 json

json是一種語法。採用鍵值對的方式存儲和交換文本信息。 例:   { "staff": [{ "name": "霄羽", "age": 20 }, { "name

原创 媒體查詢

兩種方式: 外鏈 <link type="text/css" rel="stylesheet" href="link.css" media="only screen and (max-width:480px)"/> 內

原创 跨域

域名地址的組成: 當協議,子域名,主域名,端口號任意一個不同時,都算作不同域。不同域之間資源請求就叫做跨域。   如果你直接跨域訪問了,瀏覽器將報錯,因爲你沒有訪問權限。javascript出於安全方面考慮,不允許跨域調用其

原创 作用域

本文不進行系統的講解,只枚舉及個特殊的例子。 例1 <script> var str1 = "hello"; var str2 = "world"; function t1() { co

原创 兩個

  javascript是一種描述型腳本語言,它不同於java或C#等編譯性語言,它不需要進行編譯成中間語言,而是由瀏覽器進行動態地解析與執行。這裏有一個很重要的概念—代碼塊。 代碼塊:  JavaScript中的代碼塊是指由<s

原创 JS中的異步與Promise

  我們知道,js的執行環境是“單線程”的。所謂”單線程”,就是指一次只能完成一件任務。如果有多個任務,就必須排隊,前面一個任務完成,再執行後面一個任務,以此類推。   js被創造出來用於實現操作瀏覽器html中的DOM樹、CS

原创 var ev = ev || event

event是事件對象(也是window的屬性),但不是標準的,只有IE支持。 在W3C標準支持的瀏覽器下事件對象是引發事件函數的第一個參數,參數名隨意。 所以,我們一般使用事件對象: function (ev){

原创 異步與Event Loop

  JavaScript的單線程,與它的用途有關。作爲瀏覽器腳本語言,JavaScript的主要用途是與用戶互動,以及操作DOM。這決定了它只能是單線程,否則會帶來很複雜的同步問題。比如,假定JavaScript同時有兩個線程,一