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操作符

1
2
3
4
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.以下代码的输出结果是?为什么?

1
2
3
4
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. 以下代码的输出结果是?

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

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

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

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

var arr = [3,4,5]

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

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

1
2
3
4
5
var obj = {
name: 'hunger',
sex: 'male',
age: 28
}
1
2
3
4
5
6
7
8
var obj = {
name: 'hunger',
sex: 'male',
age: 28
}
for(key in obj){
console.log(key+":"+obj[key]);
}

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

1
2
3
4
5
6
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
*/
1
2
3
4
5
6
var d = 5;                                             // bb
var data = d ==5 && console.log('bb')
console.log(data)
/* data = ( d == 5 ) && console.log("bb")
d == 5 ==> true ;
*/
1
2
3
4
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
1
2
3
4
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

×

纯属好玩

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
  1. 1. 1.JavaScript 定义了几种数据类型? 哪些是原始类型?哪些是复杂类型?原始类型和复杂类型的区别是什么?
  2. 2. 2.typeof和instanceof的作用和区别?
  3. 3. 3.如何判断一个变量是否是数字、字符串、布尔、函数
  4. 4. 4.NaN是什么? 有什么特别之处?
  5. 5. 5.如何把非数值转化为数值?
    1. 5.1. 1. Number()函数
    2. 5.2. 2. parseInt()
    3. 5.3. 3. parseFloat()
  6. 6. 6.==与===有什么区别
  7. 7. 7.break与continue有什么区别
  8. 8. 8.void 0 和 undefined在使用场景上有什么区别
  9. 9. 9.以下代码的输出结果是?为什么?
  10. 10. 10. 以下代码的输出结果是?
  11. 11. 11. 以下代码的输出结果是? 为什么
  12. 12. 12. 遍历数组,把数组里的打印数组每一项的平方
  13. 13. 13. 遍历 JSON, 打印里面的值
  14. 14. 14. 以下代码输出结果是? 为什么 (选做题目)
,