数据类型运算符流程控制语句(进阶2)

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

  1. JavaScript定义了6种数据类型:数值(number)、字符串(string)、布尔(boolean)、undefined、null、对象(object)、Symbol(ES6引入)
  2. 原始类型:number, string, boolean,Symbol(ES6引入)
  3. 复杂类型:对象(对象又包括侠义对象、数组、正则表达式、函数)
  4. 区别:一个对象可以包含多个原始类型值(或对象值)的合成;而原始类型是最基本的数据类型,不能再细分

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

  1. typeof:
    • 可以判断数据类型,它返回表示数据类型的字符串(返回结果只能包括number,boolean,string,function,object,undefined);
    • 可以使用typeof判断变量是否存在(如if(typeof a!="undefined"){...});
    • 对于Array、Null、正则表达式等特殊对象,会返回object
  2. instanceof:
    • 用于判断一个变量是否是某个对象的实例
    • 返回true和false
    • 可以用来判断数组
      if( x instanceof Array ){...}

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

//判断数字
let a = 1;
console.log(typeof a);
if(typeof a === "number"){
  console.log("a is number");
}
//判断字符串
if(typeof b==='string')
//判断布尔
if(typeof c==='boolean')
//判断函数
if(typeof f==='function')

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

-  NaN表示非数字,它是数字类型,but not a Number
-  NaN和任何值都不相等,包括自己

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

-  number()
-  parseInt()
-  parseFloat()
-  上边3种方法的参数
    -  当只有一个参数时:表示将参数当成10进制转换10进制
    -  当有两个参数时:表示将第一个参数当成第二个参数所表示的进制数,转换成10进制数

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

  • 前者时近似相等:会将数据转化成预期类型,再进行比较
  • 后者时绝对相等:先判断类型是否相等=同,若类型相同才进行值的比较
  • 如果javascript预期某个位置是布尔值,如下6个值会被转换成false:""、undefined、NaN、0、null、false,其它值都会转换为true

7. break与continue有什么区别

  • break:直接跳出循环,即循环停止
  • continue:直接进入下一个循环,不会走当前循环后面的代码

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

  • void 0:返回undefined
  • undefined:表示未知类型,是一个全局对象的属性,但在ES5和ES6中,可以在局部作用域内赋值。(在低版本 IE 中能被重写)
function f(){
  var undefined = 10;
  console.log(undefined);
}
f();//打印10
  • 区别:void 0返回值一定是undefined,undefined却可以在局部作用域内被赋其它值

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

console.log(1+1);    
console.log("2"+"4");  
console.log(2+"4"); 
console.log(+"4");
  1. console.log(1+1);

输出2,+号两边都是数字时,做数字加法运算

  1. console.log("2"+"4");

输出"24",+号的任意一边是字符串,则做字符串拼接

  1. console.log(2+"4");

输出"24",+号的任意一边是字符串,则做字符串拼接

  1. console.log(+"4");

输出4,加号只有后面有数据,则直接将它转换为数字

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

var a = 1;  
a+++a;  
typeof a+2;

输出"numbe2"(严格的说,后面得用console.log打印才能看到输出结果)

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

 var a = 1;
 var b = 3;
 console.log( a+++b );

输出4;因为++比+的优先级高,所以相当于(a++)+b=(1++)+3=1+3=4

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

var arr = [3,4,5]

代码:

var arr = [3,4,5];
for(let i=0;i

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

var obj = {
 name: 'hunger', 
 sex: 'male', 
 age: 28 
}

代码:

for (let key in obj){
  console.log(obj[key]);
}

14. 以下代码输出结果是? 为什么 (选做题目)

var a = 1, b = 2, c = 3;
var val = typeof a + b || c >0
console.log(val) 

var d = 5;
var data = d ==5 && console.log('bb')
console.log(data)

var data2 = d = 0 || console.log('haha')
console.log(data2)
 
var x = !!"Hello" + (!"world", !!"from here!!");
console.log(x)

输出:

// typeof a + b || c >0 ==> ((typeof a)+b)||(c>0) ==> ("number"+2)||true ==>"number2"||true==>"number2"
"number2" 
"bb"
 //d ==5 && console.log('bb') ==> true && undefined ==> undefined
undefined
"haha"
//d = 0 || console.log('haha') ==> 0 || undefined ==> undefined
undefined 
2

你可能感兴趣的:(数据类型运算符流程控制语句(进阶2))