进阶-任务2

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

  • 数据类型
    number, string, boolean, object,undefined, null
  • 原始数据类型
    number, string, boolean,
  • 复杂类型
    object
  • 原始类型和复杂类型的区别
    原始类型是最基本的数据类型,不能再细分了。
    复杂类型往往是多个原始类型的值的合成,可以看作是一个存放各种值的容器。

typeof和instanceof的作用和区别?

  • typeof运算符可以返回一个值的数据类型:
    数值、字符串、布尔值分别返回number、string、boolean;
    函数返回function;
    undefined返回undefined;
    除此以外,其他情况都返回object;
  • instanceof可以判断是不是某个构造函数的实例
var o = {};
var a = [];
o instanceof Array // false
a instanceof Array // true

因此instanceof可以用来区分数组和对象

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

function isNumber(a) {
  return typeof a == 'number';
}
function isString(a) {
  return typeof a == 'string';
}
function isBoolean(a) {
  return typeof a == 'boolean';
}
function isFunction(a) {
  return typeof a == 'function';
}

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

  • NaN非数值
  • NaN和任何值都不相等,包括自己
NaN == NaN  // false

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

  • Number()
  • parseInt()
  • parseFloat()

==与===有什么区别

1.==

  • 相等运算符比较相同类型的数据时,与严格相等运算符完全一样。
  • 比较不同类型的数据时,相等运算符会先将数据进行类型转换,然后再用严格相等运算符比较:
    原始类型的数据会转换成数值类型再进行比较;
    对象(这里指广义的对象,包括数组和函数)与原始类型的值比较时,对象转化成原始类型的值,再进行比较;
    undefined和null与其他类型的值比较时,结果都为false,它们互相比较时结果为true;
    2.===
  • 如果两个值的类型不同,直接返回false;
  • 同一类型的原始类型的值(数值、字符串、布尔值)比较时,值相同就返回true,值不同就返回false;
  • 两个复合类型(对象、数组、函数)的数据比较时,不是比较它们的值是否相等,而是比较它们是否指向同一个对象;
  • 注意,对于两个对象的比较,严格相等运算符比较的是地址,而大于或小于运算符比较的是值。

break与continue有什么区别

  • break是跳出循环体,执行下一条语句
  • continue是跳出本次循环,执行下一次循环

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

  • undefined可能会被赋值
  • 而void 0永远返回真是的undefined,void 0用来在if判断时代替真实的undefined

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

console.log(1+1);        // 2
console.log("2"+"4");  // "24" 
console.log(2+"4");    // "24"
console.log(+"4");      // 4
  • 如果运算子是对象,先自动转成原始类型的值;
  • 两个运算子都是原始类型的值以后,只要有一个运算子是字符串,则两个运算子都转为字符串,执行字符串连接运算。
  • 否则,两个运算子都转为数值,执行加法运算。
  • 加法运算符一定有左右两个运算子,如果只有右边一个运算子,就是另一个运算符,叫做“数值运算符”,值运算符用于返回右边运算子的数值形式。

以下代码的输出结果是?

var a = 1; 
a+++a;  
typeof a+2;    //'number2'

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

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

相当于(a++)+b,即1+3=4

遍历数组,把数组里的打印数组每一项的平方 var arr = [3,4,5]

for (var i=0; i

遍历 JSON, 打印里面的值

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

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

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

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

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

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

你可能感兴趣的:(进阶-任务2)