【Javascript】流程控制语句、函数和作用域

d---

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

NaN

简单的理解是:NaN是一个数值,但具体不知道是多少
我们先用typeof看看NaN的数据类型可以验证其数据类型

typeof NaN
"number"

特点

NaN 与其他数值进行比较的结果总是不相等的,包括它自身在内。
因此,不能与 Number.NaN 比较来检测一个值是不是数字,而只能调用 isNaN() 来比较。


break与continue有什么区别?

break和continue语句用于在循环中精确控制代码的执行

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

switch case 语句中的 break 有什么作用?

如果表达式等于case的值,对应的语句就会执行,break关键字会使程序跳出switch语句


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

var a = 1;
var b = 3;
console.log( a+++b );
  • 输出结果
    结果为4
  • 原因
    主要判断a+++b的具体执行顺序,根据运算符优先级可知,++运算符优先级高于+,且自增的后置运算符的优先级高于前置运算符,所以执行顺序应为(a++)+b

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

var arr = [3,4,5]

解题如下,使用for in的方法

var arr = new Array(3, 4, 5) 
for(var item in arr) {
console.log(arr[item]*arr[item]);
}

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

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

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

var data2 = d = 0 || console.log('haha')
console.log(data2)
输出haha // 0||console.log('haha')为'haha',赋值给d,再赋值给data2
 
var x = !!"Hello" + (!"world", !!"from here!!");
console.log(x)
输出2 // !!"Hello"为true, (!"world", !!"from here!!")也为true,两true相加转换为数字1+1,得2

关于 if(xx)和 a==b的判断

博客再补,通过学习,简单的总结就是:

  • if(xx) 应当把xx转换成布尔值之后判断
  • xx == xx 应当把xx转换成数字进行比较判断
    其中有一些特殊的东西:
  • NaN === NaNfalse
  • 空字符串转布尔值为false,其他字符串为true

参考文章

JavaScript NaN属性|W3School
JavaScript 遍历数组的方式for循环&for in|脚本之家

你可能感兴趣的:(【Javascript】流程控制语句、函数和作用域)