JS练习篇2

情到浓时终转凉″ 提交于 2020-03-07 03:30:30
1. 用var定义的变量,在二次声明却未赋值时,该变量的值还是第一个定义的值
var a=3;
var a;
console.log(a);//3
2. valueOf方法的使用
  1. undefinednull没有valueOf方法,使用会报错。
  2. 布尔类型会返回原值:true/false
  3. 字符串类型会返回原值
  4. 数字:
    ① 如果是整数,则需要用小括号将数字包起来再使用valueOf方法,直接在数字后面跟valeuOf会报错。
    ② 如果是小数,可以直接调用valueOf方法
  5. 对象Object类型及自定义对象类型会返回源对象(注意花括号可能会被当做代码块的问题
  6. 函数function类型会返回原函数
  7. 数组Array类型返回原数组
  8. Date对象类型返回数字(1970年1月1日00:00:00至现在的毫秒数);
  9. 正则表达式类型返回正则对象。
//在做加法时,在对象被强制转换成数字时会调用其valueOf方法
let i = 1+{
	valueOf(){
		return 9;
	}
}
3. forEachmap方法的执行是会跳过非有效值(即未初始化的值,如果直接给一个元素设置为nullundfined,其仍被视为有效值)
let arr = new Array(10);
    let i = 0;
    arr.forEach((val,index)=>{
        i++;
    })
    console.log(i)//0
let arr = [1,undefined,null,34,3];
    var i = 0;
    arr.forEach((val,index)=>{
        i++;
    })
    console.log(i)//5
4. js的保留字

在这里插入图片描述

5. ({}+'b'>{}+'a')的返回值是?
  • {}if判断时被视为true
  • 如果不带(),{}在首位会被解释为代码段,而非空对象。只有在非首位的地方,{}才会被解释为空对象
  • {}+'b'==[object Object]b,{}+'a'==[object Object]a,由于+的优先级大于>,故先算>两侧的加法,故最终是两个字符串进行比较大小,对字符串每一位的ascii码依次进行比较,直到遇到不相等的字符。故最终返回值为true
6. js中的符号优先级
从高到低

在这里插入图片描述

7. js1/0Infinity,1/-0-Infinity,不会报错。isNaN(1/0)值为false,但是0/0的结果为NAN,故isNaN(0/0)结果为true
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!