进阶2

作者: 饥人谷_一叶之秋 | 来源:发表于2017-10-13 21:45 被阅读0次

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

  • 1.JavaScript定义了六种数据类型有:
    数值(number):整数和小数(比如1和3.14)
    字符串(string):字符组成的文本(比如"Hello World")
    布尔值(boolean):true(真)和false(假)两个特定值
    undefined:表示“未定义”或不存在,即此处目前没有任何值
    null:表示空缺,即此处应该有一个值,但目前为空
    对象(object):各种值组成的集合
  • 原始类型:数值(number),字符串(string),布尔值(boolean)
  • 复杂类型:对象(object)
  • undefined 和 null 一般看成两个特殊值
  • 区别:原始数值是最基本的类型不能再细分了;复杂类型是多个原始类型的值的合成,可以看作是一个存放各种值的容器。

二,typeof和instanceof的作用和区别?

  • tyoeof可以返回一个值的数据类型。typeof几乎不可能得到它们想要的结果。typeof只有一个实际应用场景,就是用来检测一个对象是否已经定义或者是否已经赋值。而这个应用却不是来检查对象的类型。
  • instanceof 运算符用来检测 constructor.prototype 是否存在于参数 object 的原型链上。

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

  • 利用typeof就可以判断,因为数值、字符串、布尔值、函数分别返回number、string、boolean、function。

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

  • NaN是not a number,表示非数字,NaN和任何值都不相等,包括自己。

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

    1. Number()将参数转换成数字类型
    2. parseInt()将参数转化为整数
    3. parseFloat()将参数转化成浮点数

六,==与===有什么区别

  • ==表示近似相等等号两边的参数经过转换后值相等即可输出true,否则输出false;===表示绝对相等参数不经过转换,输出true ,否则false。

七,break与continue有什么区别

  • break:跳出循环(作用域)返回上一个作用域
    continue;跳过该次循环,开始下一次循环

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

  • void0 运算返回值始终都是 undefined
    undefined 可以在局部作用域中被覆写

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

进阶2-3.png

十,以下代码的输出结果是?

进阶2-4.png

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

进阶2-5.png

十二,遍历数组,把数组里的打印数组每一项的平方

进阶2-1.png

十三,遍历 JSON, 打印里面的值

进阶2-2.png

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

1. 进阶2-6.png

根据优先级typeof a为最高输出“number”,因为b=2可以得到“number2”,由于是 || 或运算符,所以左边成立,右边即可忽略。通过console.log(val) 的时候,就去掉了""得到number2。

进阶2-7.png

根据赋值运算符优先级低,而&&运算只有两项都为true时才为true,一个为false就返回false。运算如下:true && 'bb',因为非空字符串的布尔值时true,所以该表达式的值为true,因此返回‘bb'。

进阶2-8.png

因为赋值运算符优先级低,而||运算只要一个为true就返回true。运算如下:0 || 'haha' => 0 || true,返回true,因此把字符串返回并复制给d和data2。

进阶2-9.png

根据 。因为!为逻辑非运算,取值的逻辑值相反,两个!即相当于值原本的逻辑值。逗号运算符返回第二项,又因为非空字符串的逻辑值时true,而布尔值做加法运算时,true转为1,false转为0。因此运算如下:true + (!"world", !!"from here!!") => true + !!"from here!!" => true + true => 1 + 1 => 2.

相关文章

网友评论

      本文标题:进阶2

      本文链接:https://www.haomeiwen.com/subject/fivzyxtx.html