数据类型运算符流程控制语句

2017-09-16  本文已影响0人  D一梦三四年

1. JavaScript 定义了几种数据类型? 哪些是原始类型?哪些是复杂类型?原始类型和复杂类型的区别是什么?

2. typeof和instanceof的作用和区别?

类型 结果
Undefined "undefined"
Null "object"
Boolean "boolean"
Number "number"
String "string"
Symbol (ES 6新增) "symbol"
宿主对象 (由JS环境提供) Implementation-dependent
函数对象 "function"
其他对象 "object"
var a = {};
var b = [];
a instanceof Object;   //true
b instanceof Array;     //true
[] instanceof Array;     //true

3. 如何判断一个变量是否是数字、字符串、布尔、函数

typeof a;        //"object"
typeof 2;        //"number"
typeof 'a';       //"string"
typeof true;    //"boolean"
function fn(){}
typeof fn;       //"function"

4. NaN是什么? 有什么特别之处?

NaN == NaN;               // false
NaN === NaN;             // false
Number.isNaN(NaN);   //true
isNaN(NaN);                // true

5. 如何把非数值转化为数值?

Number(true);         //1
Number('');              //0
Number('00123');    //123
Number('hello');      //NaN
parseInt('1234blue');   //1234
parseInt('');                  //NaN
parseInt('A7C',16);      //2684
parseFloat('1234blue');   //1234
parseFloat('22.4.5');        //22.4
parseFloat('0xAB');         //0
parseFloat('1.68e8');       //168000000

参考书籍《JS高程》

6. == 与 === 有什么区别?

'1' == 1;                    //true
true == 1;                 //true
undefined == null;    //true
NaN == 'NaN';          //false

7. break与continue有什么区别?

var num = 0;
for (var i = 1; i < 10; i++) {
    if(i % 5 == 0) {
        break;
    }
    num++;
}
alert(num);      //4
var num = 0;
for (var i = 1; i < 10; i++) {
    if(i % 5 == 0) {
        continue;
    }
    num++;
}
alert(num);      //8

参考书籍《JS高程》

8. void 0 和 undefined 在使用场景上有什么区别?

var undefined = 10;
alert(undefined);
// undefined -- chrome
// 10 -- IE 8

undefined 在 ES5 中已经是全局对象的一个只读(read-only)属性了,它不能被重写。但是在局部作用域中,还是可以被重写的,所以undefined现常用于全局环境。

(function() {
  var undefined = 10;      //局部变量
  alert(undefined);
})();
  // 10 -- chrome

(function() {
  undefined = 10;      //全局变量
  alert(undefined);
})();
  // undefined -- chrome

9. 以下代码的输出结果是?为什么?

console.log(1+1);            //2,两数值相加,直接计算
console.log("2"+"4");        //"24",两字符串相加,直接拼接
console.log(2+"4");          //"24",只有一个操作数是字符串,将另一个转换为字符串,进行拼接     
console.log(+"4");           //4,对非数值应用一元加操作符时,该操作符会像Number()转型函数一样对这个值执行转换

10. 以下代码的输出结果是?

var a = 1;
a+++a;                 //3,++优先级高,可写为(a++) + (a),1+2=3
typeof a+2;            //"number2", typeof 的优先级比较高,先输出 typeof a
 的结果字符串"number",再与数值2进行加法操作,得到结果字符串"number2"

11. 以下代码的输出结果是? 为什么

 var a = 1;
 var b = 3;
 console.log( a+++b );        
//4,++优先级高,先执行 a++,在+ b,即 1+3
原因:a++ 返回原来的值,++a返回加1后的值。

12. 遍历数组,把数组里的打印数组每一项的平方

var arr = [3,4,5]
for (var i = 0; i < arr.length; i++) {
    console.log(arr[i] * arr[i]);
}

13. 遍历 JSON, 打印里面的值

var obj = {
 name: 'hunger', 
 sex: 'male', 
 age: 28 
}
for (i in obj) {
    console.log(obj[i]);
}

14. 以下代码输出结果是? 为什么

var a = 1, b = 2, c = 3;
var val = typeof a + b || c >0
console.log(val) 
//number2,优先级顺序为typeof,+,>,||;||逻辑或运算符在第一个操作数是对象时,返回第一个操作数

var d = 5;
var data = d ==5 && console.log('bb')
console.log(data)
//undefined, == 的优先级高于 &&, &&逻辑与操作符在第一个操作数是对象时,返回第二个操作数,data = 'bb',
**但此处有坑,console.log('haha'); 控制台输出的是haha,但是将console.log('haha');这个语句赋值给一个变量,那么这个变量,就是undefined。(偷看了前面学姐的答案!)**

var data2 = d = 0 || console.log('haha')
console.log(data2)
//undefined,||逻辑或运算符在第一个操作数的求值结果是 false 时,返回第二个操作数,data2 = 'haha'

var x = !!"Hello" + (!"world", !!"from here!!");
console.log(x)
//2,!!为取两次非,优先级顺序为 ! !!,+,,;var x = true + true;
上一篇 下一篇

猜你喜欢

热点阅读