變量作用域
var bb = 1;
function aa(bb) {
bb = 2;
alert(bb);
};
aa(bb);
alert(bb);
函數(shù)體內(nèi)瞳别,bb并沒有使用var來定義征候,按理說這個bb在預(yù)處理的時候應(yīng)該是window的屬性。但在這里祟敛,函數(shù)聲明的時候疤坝,帶了一個參數(shù)bb,也就是相當(dāng)于在函數(shù)體內(nèi)聲明了var bb馆铁。所以跑揉,函數(shù)里的bb就是函數(shù)活動對象的屬性。所以函數(shù)執(zhí)行時會輸出2埠巨。函數(shù)執(zhí)行完后历谍,函數(shù)的活動對象被銷毀,也就是局部的這個bb被刪除了辣垒,執(zhí)行流進入到window望侈,再輸出bb,值就是1了勋桶。如果聲明函數(shù)時脱衙,把參數(shù)那里的bb去掉,這段代碼執(zhí)行起來例驹,結(jié)果就是彈出 2 2.
1. var a=b=3
var a=b=3 時a是局部變量捐韩,而b是全局變量;
相當(dāng)于var a = 3鹃锈;b = 3荤胁;
b是全局的!
var a,b;
(function(){
alert(a);
alert(b);
var a=b=3;
alert(a);
alert(b);
})();
alert(a);
alert(b);
運行結(jié)果為:
undefined仅政,undefined,3,3运褪,undefined雅倒,3
2. this
var myObject = {
foo: "bar",
func: function() {
var self = this;
console.log(this.foo);
console.log(self.foo);
(function() {
console.log(this.foo); //此時的this指向window
console.log(self.foo);
}());
}
};
myObject.func();
運行結(jié)果:
bar
bar
undefined
bar
3. jQuery
jQuery width() 和 height() 方法
width() 方法設(shè)置或返回元素的寬度(不包括內(nèi)邊距、邊框或外邊距)凿将。
height() 方法設(shè)置或返回元素的高度(不包括內(nèi)邊距牧抵、邊框或外邊距)。jQuery innerWidth() 和 innerHeight() 方法
innerWidth() 方法返回元素的寬度(包括內(nèi)邊距)。
innerHeight() 方法返回元素的高度(包括內(nèi)邊距)省店。jQuery outerWidth() 和 outerHeight() 方法
outerWidth() 方法返回元素的寬度(包括內(nèi)邊距和邊框)旭旭。
outerHeight() 方法返回元素的高度(包括內(nèi)邊距和邊框)。
4. ARP是地址解析協(xié)議
ARP是地址解析協(xié)議废麻,工作在網(wǎng)絡(luò)層掂碱,簡單語言解釋一下工作原理沧卢。
1:首先,每個主機都會在自己的ARP緩沖區(qū)中建立一個ARP列表,以表示IP地址和MAC地址之間的對應(yīng)關(guān)系。
2:當(dāng)源主機要發(fā)送數(shù)據(jù)時,首先檢查ARP列表中是否有對應(yīng)IP地址的目的主機的MAC地址,如果有膝蜈,則直接發(fā)送數(shù)據(jù),如果沒有券坞,就向本網(wǎng)段的所有主機發(fā)送ARP數(shù)據(jù)包,該數(shù)據(jù)包包括的內(nèi)容有:源主機 IP地址,源主機MAC地址筝尾,目的主機的IP 地址。
3:當(dāng)本網(wǎng)絡(luò)的所有主機收到該ARP數(shù)據(jù)包時雇盖,首先檢查數(shù)據(jù)包中的IP地址是否是自己的IP地址忿等,如果不是栖忠,則忽略該數(shù)據(jù)包崔挖,如果是贸街,則首先從數(shù)據(jù)包中取出源主機的IP和MAC地址寫入到ARP列表中,如果已經(jīng)存在狸相,則覆蓋薛匪,然后將自己的MAC地址寫入ARP響應(yīng)包中,告訴源主機自己是它想要找的MAC地址脓鹃。
4:源主機收到ARP響應(yīng)包后逸尖。將目的主機的IP和MAC地址寫入ARP列表,并利用此信息發(fā)送數(shù)據(jù)瘸右。如果源主機一直沒有收到ARP響應(yīng)數(shù)據(jù)包娇跟,表示ARP查詢失敗。
廣播發(fā)送ARP請求太颤,單播發(fā)送ARP響應(yīng)苞俘。
TCP和UDP是傳輸層,ARP是網(wǎng)絡(luò)層龄章。FTP應(yīng)用層吃谣。
OSI模式把 網(wǎng)絡(luò)工作 分為七層,彼此不直接打交道做裙,只通過接口(layer interface). IP地址 在第三層, MAC地址 在第二層岗憋。協(xié)議在發(fā)送數(shù)據(jù)包時奕剃,得先封裝第三層(IP地址)畔柔,第二層(MAC地址)的報頭, 但協(xié)議只知道目的節(jié)點的IP地址,不知道其MAC地址赏淌,又不能跨第二拧廊、三層杂穷,所以得用ARP的服務(wù)
IP地址分類
- 1. A類IP地址 一個A類IP地址由1字節(jié)的網(wǎng)絡(luò)地址和3字節(jié)主機地址組成 ,網(wǎng)絡(luò)地址的最高位必須是“0”卦绣, 地址范圍從1.0.0.0 到126.0.0.0耐量。
- 2. B類IP地址 一個B類IP地址由2個字節(jié)的網(wǎng)絡(luò)地址和2個字節(jié)的主機地址組成 ,網(wǎng)絡(luò)地址的最高位必須是“10”滤港,地址范圍從 128 .0.0.0到191.255.255.255廊蜒。
- 3. C類IP地址 一個C類IP地址由3字節(jié)的網(wǎng)絡(luò)地址和1字節(jié)的主機地址組成 ,網(wǎng)絡(luò)地址的最高位必須是“110”溅漾。范圍從 192 .0.0.0到223.255.255.255山叮。
6. jquery ajax中都支持哪些返回類型?
數(shù)據(jù)類型
$.ajax()函數(shù)依賴服務(wù)器提供的信息來處理返回的數(shù)據(jù)添履。如果服務(wù)器報告說返回的數(shù)據(jù)是XML屁倔,那么返回的結(jié)果就可以用普通的XML方法或者jQuery的選擇器來遍歷。如果見得到其他類型暮胧,比如HTML锐借,則數(shù)據(jù)就以文本形式來對待问麸。
通過dataType選項還可以指定其他不同數(shù)據(jù)處理方式。除了單純的XML钞翔,還可以指定 html严卖、json、jsonp布轿、script或者text哮笆。
7. javascript數(shù)據(jù)類型
js七種數(shù)據(jù)類型:String Boolean Number null undefined Object Array
五種基本類型:String Boolean Number null undefined
六種返回格式:'string' 'number' 'object' 'function' 'boolean' 'undefined'
- JavaScript內(nèi)部,所有數(shù)字都是以64位浮點數(shù)形式儲存汰扭,即使整數(shù)也是如此稠肘。
- javascript中字符串連接時用Array.join()替換 string += "xx",換來幾十倍的速度提升萝毛。
console.log(1+ "2"+"2");
console.log(1+ +"2"+"2"); // 1 + 2 + "2"
console.log("A"- "B"+"2");
console.log("A"- "B"+2); //字符串相減就是得出NaN启具,console.log("B"- "A"+2);也一樣是NaN
輸出:
122
32
NaN2
NaN
8. 嵌入在HTML文檔中的圖像格式可以是?
bese64編碼文件
常用的頁面的圖片格式有三種珊泳,GIF鲁冯、JPG、PNG色查。我們把圖像文件的內(nèi)容直接寫在了HTML 文件中薯演,這樣做的好處是,節(jié)省了一個HTTP 請求秧了。壞處呢跨扮,就是瀏覽器不會緩存這種圖像。
9.
indexdDB 是 HTML5 的本地存儲验毡,把一些數(shù)據(jù)存儲到瀏覽器(客戶端)中衡创,當(dāng)與網(wǎng)絡(luò)斷開時,可以從瀏覽器中讀取數(shù)據(jù)晶通,用來做一些離線應(yīng)用璃氢。
Cookie 通過在客戶端 ( 瀏覽器 ) 記錄信息確定用戶身份,最大為 4 kb 狮辽。
url 參數(shù)用的是 get 方法一也,從服務(wù)器上獲取數(shù)據(jù),大小不能大于 2 kb 喉脖。
Session 是服務(wù)器端使用的一種記錄客戶端狀態(tài)的機制 椰苟。
post 是向服務(wù)器傳送數(shù)據(jù),數(shù)據(jù)量較大树叽。
local Storage 也是 HTML5 的本地存儲舆蝴,將數(shù)據(jù)保存在客戶端中(一般是永久的)。
10. 解釋性語言 & 變異性語言
解釋性語言和編譯性語言的定義:
計算機不能直接理解高級語言,只能直接理解機器語言洁仗,所以必須要把高級語言翻譯成機器語言层皱,計算機才能執(zhí)行高級語言編寫的程序。翻譯的方式有兩種京痢,一個是編譯,一個是解釋篷店。兩種方式只是翻譯的時間不同祭椰。
- 解釋性語言的定義:解釋性語言的程序不需要編譯,在運行程序的時候才翻譯疲陕,每個語句都是執(zhí)行的時候才翻譯方淤。這樣解釋性語言每執(zhí)行一次就需要逐行翻譯一次,效率比較低√阊辏現(xiàn)代解釋性語言通常把源程序編譯成中間代碼携茂,然后用解釋器把中間代碼一條條翻譯成目標(biāo)機器代碼,一條條執(zhí)行诅岩。 非獨立讳苦。
- 編譯性語言的定義:編譯性語言寫的程序在被執(zhí)行之前,需要一個專門的編譯過程吩谦,把程序編譯成為機器語言的文件鸳谜,比如exe文件,以后要運行的話就不用重新翻譯了式廷,直接使用編譯的結(jié)果就行了(exe文件)咐扭,因為翻譯只做了一次,運行時不需要翻譯滑废,所以編譯型語言的程序執(zhí)行效率高蝗肪。
- 非獨立應(yīng)該是針對需要解析器來說的。
11. 區(qū)分對象與表達式
window.setTimeout(checkState, 10000);
window.setTimeout(checkState(), 10000);
heckState加了圓括弧相當(dāng)于函數(shù)表達式蠕趁,會立即執(zhí)行薛闪,執(zhí)行的結(jié)果作為返回值傳遞給settimeout。
checkState不是一個函數(shù) 是對象 所以沒有()
12.
請問 a 的結(jié)果是什么俺陋?
if(! "a" in window){
var a = 1;
}
alert(a); //undefined
知識點有兩個:
- 變量聲明提前
-
逛绵!
的優(yōu)先級高于in
, 所以條件語句根本沒執(zhí)行。
function和var會提前聲明倔韭,而其實{…}內(nèi)的變量也會提前聲明(沒有快寄作用域)术浪。于是代碼還沒執(zhí)行前,a變量已經(jīng)被聲明寿酌,于是 ‘a(chǎn)’ in window 返回true胰苏,a被賦值。
13. GET & POST
指針
#include<stdio.h>
void main()
{
short *p,*q;
short arr[15]={0};
p=q=arr;
p++;
printf("%d,",p-q);
printf("%d,",(char*)p-(char*)q);
printf("%d",sizeof(arr)/sizeof(*arr));
}
指針自增醇疼、自減每次移動的偏移量是指針?biāo)赶驅(qū)ο蟮淖止?jié)大小硕并,所以p++與q的偏移量是2個字節(jié)法焰。
指針相減的值是指針地址的偏移除以指針每次移位的大小倔毙;
1)p-q=1;偏移量為2個字節(jié)埃仪,每次移動2個字節(jié),所以為1
2)(char )p-(char )q陕赃,指針的偏移沒變卵蛉,但是每次指針移位是按照(char)類型移動,即每次移動1個字節(jié)么库,所以是2
3)數(shù)字每次元素2個字節(jié)傻丝,所以sizeof(arr)為30,sizeof(arr)為2诉儒。
int main(){
int a;float b,c;
scanf("%2d%3f%4f",&a,&b,&c);
printf("\\na=%d,b=%d,c=%f\\n",a,b,c);
}
若運行時從鍵盤上輸入9876543210l,則上面程序的輸出結(jié)果是a=98,b=0,c=0.000000
%2d是將數(shù)字按寬度為2葡缰,采用右對齊方式輸出,若數(shù)據(jù)位數(shù)不到2位忱反,則左邊補空格
輸入的數(shù)據(jù)沒有以空格或者別的空白符分割泛释,故都屬于第一個數(shù)