FAQ前端面試大雜燴4

1 輸出結果

這裏寫圖片描述

答案是 hello189

字符串與數字相加,得到的還是字符串

2 關於js的執行問題

這裏寫圖片描述

head部分中的腳本:需調用才執行的腳本或事件觸發執行的腳本
放在HTML的head部分中
body部分中的腳本:當頁面被加載時立即執行的腳本放在HTML的body部分

3 flash js 交互

這裏寫圖片描述

Flash提供了ExternalInterface接口與JavaScript通信
兩個方法:call和addCallback
作用:call讓Flash調用js裏的方法,addCallback是用來註冊flash函數讓js調用。

4 函數

這裏寫圖片描述

這裏寫圖片描述

5 關於清除浮動
這裏寫圖片描述

講真,我是今天才知道,給父級元素加 overflow 可以清除浮動。而且剛剛試了試,效果和添加 clearfix 一樣

這裏寫圖片描述

3 當選擇文本
這裏寫圖片描述

select 事件用於在文本被選中後執行操作‘

$("input").select();

4 關於js中的過濾器filter
這裏寫圖片描述

首先Object.keys(data)返回的是data可被枚舉的屬性,爲 [“a”, “b”, “c”, “d”],對這個數組中的每一個元素用filter方法過濾,data[“x”]等價於data.x,就是表示data對象的x屬性的值。

一下是羣裏大神的幫助

var data = {a:1, b:2, c:3, d:4};
Object.keys(data).filter(function(key){ return data[key] > 2; });
相當於   
['a','b','c','d'].filter(function(key){ return data[key] > 2; }); //Object.keys(data) => ['a','b','c','d'];
相當於
{
  var array = ['a','b','c','d'];
  var result = [];
  for(var i = 0; i < array.length; i++) {
    if( (function(key){ return data[key] > 2; }) (array[i], i, array)) {
      result.push(array[i])
    }
  }
}

(function(key){ return data[key] > 2; }) (array[i], i, array)
相當於
(function(key){ return data[key] > 2; }) ('a', 0, ['a','b','c','d'])
相當於

{ a_result_value = data['a'] > 2; }

哎。和大神的距離還有很遠呀。
這裏寫圖片描述

參考文章

5 對象

對象是
var newObj = obj,相當於兩個對象指向同一個地址,修改其中任何一個,另外一個也會受到影響。

6 權重問題
這裏寫圖片描述

權重 :內聯 權重1000 , ID 選擇器 權重:100, 類 僞類 屬性選擇器 權重:10 ,僞對象 選擇器 權重:1
除!important ,內聯權重最大!
important > 內聯 > ID > 類 > 標籤 | 僞類 | 屬性選擇 > 僞對象 > 繼承 > 通配符


A:如果規則是寫在標籤的style屬性中(內聯樣式),則A=1,否則,A=0. 對於內聯樣式,由於沒有選擇器,所以B、C、D的值都爲0,即A=1, B=0, C=0, D=0(簡寫爲1,0,0,0,下同)。
B:計算該選擇器中ID的數量。(例如,#header 這樣的選擇器,計算爲0, 1, 0, 0)。
C:計算該選擇器中僞類及其它屬性的數量(包括class、屬性選擇器等,不包括僞元素)。 (例如, .logo[id=’site-logo’] 這樣的選擇器,計算爲0, 0, 2, 0)。
D:計算該選擇器中僞元素及標籤的數量。(例如,p:first-letter 這樣的選擇器,計算爲0, 0, 0, 2)。
總結
一條樣式規則的整體權重值包含四個獨立的部分:[A, B, C, D];
A表示內聯樣式,只有1或者0兩個值;
B表示規則中ID的數量;
C表示規則中除了ID、標籤和僞元素以外的其它選擇器數量;
D表示規則中標籤和僞元素的數量;
比較時從高位到低位(從A到D)分別比較,高位相同才需要比較低位;
有 !important 標記的屬性權重值無視沒用 !important 指定的一切情況;
多次指定 !important 時,相互抵銷。

7 字符串拼接
這裏寫圖片描述

對於js中字符串,一旦字符串創建,將無法改變。要改變某個變量的保存的的字符串,首先要銷燬原來的字符串,然後再用另外一個包含新值的字符串填充該變量

var lang = "Java";
lang = lang + "Script";

實現這個操作的過程如下:首先創建一個能容納10個字符的新字符串,然後在這個字符串中填充“Java”和“Script”,最後一步是銷燬原來的字符串“Java”和“Script”,因爲這兩個字符串已經沒用了。所以在某些瀏覽器中字符串拼接速度是很消耗一個性能的過程。
對於本題中的AB選項,其過程如下。
這裏寫圖片描述

所以本題答案爲c

8 參數傳值
這裏寫圖片描述

答案爲C .

這相當於函數傳值,把一個值類型(也叫基本類型)傳遞給另一個變量時,其實是分配了一塊新的存儲空間,因此就本題來說,在內部改變這個值時,其實在函數外部對這個值沒有影響。

注意這和

var bb =1;
function aa(){
   bb=3;
   alert(bb)
}
aa();
alert(bb);

兩者不相同

9 js的基本類型
這裏寫圖片描述

10 false
這裏寫圖片描述

如下幾種會返回false:

false  null undefined  0   ""(空字符串)  NAN 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章