JavaScript 类型

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

JavaScript语言的每一个值,都属于某一种数据类型。JavaScript的数据类型,共有六种。

  1. 数值(number):整数和小数(比如1和3.14)
  2. 字符串(string):字符组成的文本(比如"Hello World")
  3. 布尔值(boolean):true(真)和false(假)两个特定值
  4. undefined:表示“未定义”或不存在,即此处目前没有任何值
  5. null:表示空缺,即此处应该有一个值,但目前为空
  6. 对象(object):各种值组成的集合
  7. symbol:一个symbol值能作为对象属性的标识符;这是该数据类型仅有的目的。

数值、字符串、布尔值称为原始类型(primitive type)的值,即它们是最基本的数据类型,不能再细分了。

将对象称为复杂类型(complex type)的值,因为一个对象往往是多个原始类型的值的合成,可以看作是一个存放各种值的容器。

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

typeof

作用: 是一个一元运算,放在一个变量之前,变量可以是任意类型。

它返回值是一个字符串,该字符串说明变量的类型。typeof 一般只能返回如下几个结果:number,boolean,string,function,object,undefined。

我们可以使用 typeof 来获取一个变量是否存在,如 if(typeof a!="undefined"){alert("ok")},而不要去使用 if(a) 因为如果 a 不存在(未声明)则会出错。

区别: 对于 Array,Null 等特殊对象使用 typeof 一律返回 object,这正是 typeof 的局限性。

instanceof
作用返回的是一个布尔值,判断该变量是否某一类型。如:
var a = {};
alert(a instanceof Object); //true
var b = [];
alert(b instanceof Array); //true
区别:需要注意的是,instanceof只能用来判断对象和函数,不能用来判断字符串和数字等.但是,用instanceof可以判断变量是否为数组

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

用typeof操作符

alert(typeof(1));//number
alert(typeof("abc"));//string
alert(typeof(true));//boolean
alert(typeof function(){}); // 'function'

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

NaN含义是Not a Number,表示非数字,NaN和任何值都不相等,包括自己

特别: 任何NaN的值进行操作都会返回一个NaN,其次,NaN与任何值都不相等即NaN === NaN也是false.

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

parseInt() 函数可解析一个字符串,并返回一个整数。
parseInt("10"); //返回 10

1. Number()函数

  • 如果是 Boolean 值,true 和 false 将分别被转换为 1 和0;
  • 如果是数字值,只是简单的传入和返回;
  • 如来是null 值,返回 0;
  • 如果是 undefined,返回NaN ;
  • 如果是字符串,遵循下列规则:
  • 如果字符串中只包含数字,则将其转换为十进制数值,即"1"会变成1 , "123"会变成123,而"011"会变成11(注意,前导的0被忽略了);
  • 如果字符串中包含有效的浮点格式, 如"1.1",则将其转换为对应的浮点数值(同样,也会忽略前导零);
  • 如果字符串中包含有效的十六进制格式,例如"0xf",则将其转换为相同大小的十进制整数值;
    如果字符串是空的(不包含任何字符) ,则将其转换为0;
    如果字符串中包含除上述格式之外的字符,则将其转换为 NaN。
  • 如果是对象,则调用对象的 valueOf() 方法,然后依照前面的规则转换返回的值。如果转换的结果是 NaN,则调用对象的 toString() 方法,然后再次依照前面的规则转换返回的字符串值。

2. parseInt()

由于Number()函数在转换字符串的时候比较复杂而且不够合理,因此在处理整数的时候更常用的是parseInt()。

parselnt() 函数在转换字符串时,更多的是看其是否符合数值模式,它会忽略字符串前面的空格,直至找到第一个非空格字符;

如果第一个字符不是数字字符或者负号,parseInt() 就会返回 NaN;也就是说,用parselnt() 转换空字符时会返回 NaN(Nurnber() 对空字符返回 0);

如果第一个字符是数字字符,parselnt() 会继续解析第二个字符,直到解析完所有后续字符或者遇到了一个非数字字符。

例如,"1234blue"会被转换为1234 ,因为"blue"会被完全忽略;类似地,"'22.5"会被转换为22 ,因为小数点并不是有效的数字字符。

3. parseFloat()

与 parseInt () 函数类似,parseFloat () 也是从第一个字符(位置0)开始解析每个字符。而且也是一直解析到字符串末尾,或者解析到遇见一个无效的浮点数字字符为止。

也就是说,字符串中的第一个小数点是有效的,而第二个小数点就是无效的了,因此它后面的字符串将被忽略。举例来说,"22.34.5"将会被转换为22.34 。

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

== 相等

=== 严格相等

详细参考

7.break与continue有什么区别

break 用于强制退出循环体,执行循环后面的语句
continue 用于退出本次循环,执行下次循环

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

undefined在某些场景例如函数内是可以被赋值,而void 0 则只会返回undefined。

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

console.log(1+1);    //2    (数值相加)
console.log("2"+"4");  //24    (2,4均为字符串,+连接字符串)
console.log(2+"4");  //24  (4为字符串,2为数值,此代码会转换2为字符串然后连接)
console.log(+"4");  //4     (+号强制转换为数值)

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

var a = 1;  
a+++a;  
typeof a+2;    //number2
/* (a++)+a=1+2;   
(typeof a)+2=number2  */

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

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

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

var arr = [3,4,5]

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

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

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

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

var a = 1, b = 2, c = 3;               //number2
var val = typeof a + b || c >0      
console.log(val)            
 /*  val = (typeof a) + [ b || ( c > 0 ) ]          
 typeof a ==> number;          c > 0 ==> true;      2 ||   true ==>  true
*/
var d = 5;                                             // bb
var data = d ==5 && console.log('bb')  
console.log(data)
/*   data =  ( d == 5 )  && console.log("bb")  
   d == 5  ==>  true ;       
*/
var data2 = d = 0 || console.log('haha')                   //haha
console.log(data2)
/*  data2 = [ d =(  0 || console.log('haha')   ) ]
0 ==>false   ;   d=console.log("haha")   ;data2 = d = haha
var x = !!"Hello" + (!"world", !!"from here!!");     //2
console.log(x)
/* x = (!!"Hello") + (!"world", !!"from here!!"); 
(!!"Hello")   ==>true ;      (!"world", !!"from here!!")  ==> true  ;  x=  true +true = 2

参考答案

你可能感兴趣的:(JavaScript 类型)