1. JavaScript 定義了幾種數(shù)據(jù)類型? 哪些是原始類型?哪些是復(fù)雜類型?原始類型和復(fù)雜類型的區(qū)別是什么?
- JavaScript數(shù)據(jù)類型
- 數(shù)值 number:整數(shù)和小數(shù)
- 字符串 string:字符組成的文本
- 布爾值 boolean:true和false
- undefined:undefined 表示根本不存在定義
- null:null 表示一個值被定義了村缸,定義為“空值”
- 對象 object:各種值組成的集合
- symbol
- 原始類型:number, string, boolean
- 復(fù)雜類型:object
區(qū)別:復(fù)雜類型是多個原始類型的值的集合霎肯,可以看作是一個存放各種原始類型值的容器
undefined與null的區(qū)別
2. typeof和instanceof的作用和區(qū)別?
- typeof 返回 這個變量的數(shù)據(jù)類型(number蹋砚、string灰追、boolean
病往、function谣光、undefined弹谁,數(shù)組/對象返回object) - instanceof返回true\false
instanceof只能用來判斷對象和函數(shù)茸塞,不能用來判斷字符串和數(shù)字等
var b = '123';
alert(b instanceof String); //false
alert(typeof b); //string
var c = new String("123");
alert(c instanceof String); //true
alert(typeof c); //object
var b = [];
alert(b instanceof Array); //true
http://blog.csdn.net/u014421556/article/details/52083215
3. 如何判斷一個變量是否是數(shù)字野瘦、字符串描沟、布爾、函數(shù)
用typeof 鞭光,如
var a="666";
typeof a === string; //true
4. NaN是什么? 有什么特別之處?
表示非數(shù)字,屬于number類型/
1/0
任何數(shù)跟它都不相等吏廉,包括它自己。
5. 如何把非數(shù)值轉(zhuǎn)化為數(shù)值?
使用函數(shù) Number(), parseInt(), parseFloat() 可以將非數(shù)值轉(zhuǎn)換為數(shù)值惰许。
var a="efd3215.25"
console.log(Number(a)); //NaN
console.log(parseInt(a)); //NaN
console.log(parseFloat(a)); //NaN
var b="846.5dfef"
console.log(Number(b)); //NaN
console.log(parseInt(b)); //846
console.log(parseFloat(b)); //846.5
6. ==與===有什么區(qū)別
===表示全等:操作數(shù)必須是同一類型席覆,才進一步比較
==: 如果操作數(shù)類型不同,會在轉(zhuǎn)換類型后進行比較
7. break與continue有什么區(qū)別
break:表示強制退出循環(huán)體啡省,執(zhí)行循環(huán)體后面的語句
continue:表示退出本次循環(huán)過程娜睛,即循環(huán)體中continue后面的語句停止執(zhí)行髓霞,直接進入下次循環(huán)
8. void 0 和 undefined在使用場景上有什么區(qū)別
ES5之后的標(biāo)準(zhǔn)中,規(guī)定了全局變量下的undefined值為只讀畦戒,不可改寫的方库,但是局部變量中依然可以對之進行改寫。(非嚴(yán)格模式下)
undefined =123;
console.log(undefined); //undefined
(function(){
var undefined = 123;
console.log(undefined); //123
})()
void的返回值都是undefined障斋,
所以用void 0是為了防止undefined被重寫而出現(xiàn)判斷不準(zhǔn)確的情況纵潦。
9. 以下代碼的輸出結(jié)果是?為什么?
console.log(1+1); // 2
console.log("2"+"4"); //24
console.log(2+"4"); // 24
console.log(+"4"); //4
- 在兩個操作數(shù)都是數(shù)字的時候,會做加法運算
- 兩個參數(shù)都是字符串或在有一個參數(shù)是字符串的情況下會把另外一個參數(shù)轉(zhuǎn)換為字符串做字符串拼接
- 在參數(shù)有對象的情況下會調(diào)用其valueOf或toString
- 在只有一個字符串參數(shù)的時候會嘗試將其轉(zhuǎn)換為數(shù)字
- 在只有一個數(shù)字參數(shù)的時候返回其正數(shù)值
- 以下代碼的輸出結(jié)果是?
var a = 1;
a+++a; //(a++)+a ==> 1+2 ==> 3
typeof a+2; //(typeof a)+2 =>"number"+2 => number2
- 以下代碼的輸出結(jié)果是? 為什么
var a = 1;
var b = 3;
console.log( a+++b ); // (a++)+b => 4
// 先用a的值垃环,a再自加1邀层。 ++的優(yōu)先級比+高
- 遍歷數(shù)組,把數(shù)組里的打印數(shù)組每一項的平方
var arr = [3,4,5]
for(i=0; i<arr.length; i++){
console.log(arr[i]*arr[i]);
}
- 遍歷 JSON, 打印里面的值
var obj = {
name: 'hunger',
sex: 'male',
age: 28
}
for(var i in obj ){
console.log(i+":"+obj[i]);
}
- 以下代碼輸出結(jié)果是? 為什么 (選做題目)
|| 遂庄、&&返回的是表達式的值
var a = 1, b = 2, c = 3;
var val = typeof a + b || c >0
console.log(val)
// (typeof a) + b||c > 0 ==> "number"+ 2("number2"為true寥院,||中短路,val="number2")
var d = 5;
var data = d ==5 && console.log('bb')
console.log(data)
/* (d==5) 為true ==> console.log('bb')輸出 bb ,返回值undefined
==>&&運算涛目, data值為undefined 秸谢,輸出undefined */
var data2 = d = 0 || console.log('haha')
console.log(data2)
/* ( 0 || console.log('haha')) ==> 0,往后 ==> 輸出haha 霹肝,返回undefined
==> data2值為undefined */
var x = !!"Hello" + (!"world", !!"from here!!");
console.log(x)
/* (!"world", !!"from here!!")逗號運算符用于對兩個表達式求值估蹄,并返回后一個表達式的值,
!!"from here!!" 為true ==> !!"Hello" 為true
==> var x = true + true轉(zhuǎn)換為var x = 1 + 1 ==> x為2
當(dāng)數(shù)字和布爾值或布爾值與布爾值進行+沫换、-臭蚁、*、/操作時讯赏,會將布爾值轉(zhuǎn)換為數(shù)字垮兑,true轉(zhuǎn)換為1,false轉(zhuǎn)換為0待逞。
*/