前台常见面试题(十三)@郝晨光

  • 时间:2019-08-22 00:15 作者:郝晨光 来源:郝晨光 阅读:469
  • 扫一扫,手机访问
摘要:列举三种强制类型转换和两种隐式类型转换JavaScript是一门弱类型语言,在JavaScript中公告变量不需指定类型, 对变量赋值也没有类型检查,同时JavaScript允许隐式类型转换。强制类型转换通过String(),toString(),Number(),parseInt(),parseF

列举三种强制类型转换和两种隐式类型转换

JavaScript是一门弱类型语言,在JavaScript中公告变量不需指定类型, 对变量赋值也没有类型检查,同时JavaScript允许隐式类型转换。

强制类型转换

通过String()toString()Number()parseInt()parseFloat()Boolean()等函数强制转换

Boolean(0) // => false - Boolean Boolean(new object()) // => true - Boolean Number(undefined) // => NaN - NumberNumber(null) // => 0  - NumberString(null) // => “null” - String5.toString() // => ‘5’ - StringparseInt('5') // => 5 - Number
隐式类型转换
  1. 数学运算符+、-、*、/、%
    •   let a = '5';  let b = 'a';  let c = 5;  console.log(a%5); // => 0 - Number  console.log(a/5); // => 1 - Number  console.log(a*5); // => 25 - Number  console.log(a-5); // => 0 - Number  console.log(a+'5'); // => '55' - String  console.log(b/5); // => NaN - Number  console.log(c+5); // => 10 - Number  console.log(c+true); // => 6 - Number
    • 需要注意的是+号在进行隐式转换的时候,假如在任何一边有字符串的话,会当做拼接字符串来解决,而假如是布尔值的话:true == 1;false == 0;
  2. 布尔操作符==
    • 在使用布尔操作符==的时候,会对等号两边的数据进行类型转换比照
    • undefined等于null
    • 字符串和数字比较时,字符串转数字
    • 数字为布尔比较时,布尔转数字
    • 字符串和布尔比较时,两者转数字
  3. 判断语句if、while
    • 在使用判断语句的时候,括号内的表达式会被转换布尔值
    •   var obj = {};   if(obj){       while(obj);   } 
  4. 调用浏览器环境的方法,如:alert 会将数据转换为String


JavaScript typeof返回哪些数据类型

  1. number
  2. string
  3. boolean
  4. undefined
  5. symbol
  6. object typeof null === 'object'
  7. function



window.onload 和document.ready的区别

document.ready和onload的区别为:加载程度不同、执行次数不同、执行速度不同。

一、加载程度不同
  1. document.ready:在DOM加载完成后即可以可以对DOM进行操作。一般情况一个页面响应加载的顺序是,域名解析-加载html-加载js和css-加载图片等其余信息。那么Dom Ready应该在“加载js和css”和“加载图片等其余信息”之间,即可以操作Dom了。
  2. onload:在document文档加载完成后即可以可以对DOM进行操作,document文档包括了加载图片等其余信息。那么Dom Load就是在页面响应加载的顺序中的“加载图片等其余信息”之后,即可以操作Dom了。

二、执行次数不同

  1. document.ready可以写多个.ready,可以执行屡次,第N次都不会被上一次覆盖。
  2. onload只能执行一次,假如有多个,那么第一次的执行会被覆盖。

三、执行速度不同

  1. onload除了要等待DOM被创立还要等到包括大型图片、音频、视频在内的所有外部资源都完全加载。假如加载图片和媒体内容花费了大量时间,客户就会感受到定义在onload事件上的代码在执行时有显著的推迟。
  2. document.ready函数只要对 DOM 树的等待,而无需对图像或者外部资源加载的等待,从而执行起来更快。



== 和 ===的区别

===是严格等于,必需是等号两边的值完全相等,数据类型也完全相等的时候才相等、==是非严格等于,会先对等式两边进行隐式类型转换,而后再进行比照

==非严格等于的类型转换
  1. 假如两个值类型相同,进行 === 比较。
  2. 假如两个值类型不同,他们可能相等。根据下面规则进行类型转换再比较:
    • 假如一个是null、一个是undefined,那么相等。
    • 假如一个是字符串,一个是数值,把字符串转换成数值再进行比较。
    • 假如任一值是 true,把它转换成 1 再比较;假如任一值是 false,把它转换成 0 再比较。
    • 假如一个是对象,另一个是数值或者字符串,把对象转换成基础类型的值再比较。对象转换成基础类型,利用它的toString或者者valueOf方法。js核心内置类,会尝试valueOf先于toString;例外的是Date,Date利用的是toString转换。

===严格等于

  1. 假如类型不同,就肯定不相等
  2. 假如两个都是数值,并且是同一个值,那么相等;假如其中至少一个是NaN,那么不相等。(判断一个值能否是NaN,只能使用isNaN()来判断)
  3. 假如两个都是字符串,每个位置的字符都一样,那么相等,否则不相等。
  4. 假如两个值都是true,或者是false,那么相等
  5. 假如两个值都引用同一个对象或者是函数,那么相等,否则不相等
  6. 假如两个值都是null,或者是undefined,那么相等



style标签写在body前和body后有什么区别

body后的style标签的优先级要高于body前的style标签

写在body标签后因为浏览器以逐行方式对html文档进行解析,当解析到写在尾部的样式表(外联或者写在style标签)会导致浏览器中止之前的渲染,等待加载且解析样式表完成之后重新渲染,在IE浏览器下可能会出现FOUC现象(即样式失效导致的页面闪烁问题)



假如本文对您有帮助,可以看看本人的其余文章:
前台常见面试题(十二)@郝晨光
前台常见面试题(十一)@郝晨光
前台常见面试题(十)@郝晨光

结言
感谢您的查阅,本文由郝晨光整理并总结,代码冗余或者者有错误的地方望不吝赐教;菜鸟一枚,请多关照
  • 全部评论(0)
最新发布的资讯信息
【系统环境|】通义万相wan2.2本地部署要求有哪些?通义万相wan2.2怎么本地部署(2025-10-21 04:05)
【系统环境|】Vue3 页面卡顿严重?7 个实战技巧让渲染速度飙升 80%!(2025-10-21 04:01)
【系统环境|】前端小白 2 周 Vue3+TS+NaiveUI 学习计划大纲(2025-10-21 04:00)
【系统环境|】Vue3 入门指南: 深入理解 Setup 函数(2025-10-21 03:59)
【系统环境|】2024前端面试真题之—VUE篇(2025-10-21 03:58)
【系统环境|】搞懂Vue3的toRefs与toRef:响应式对象的解构(2025-10-21 03:55)
【系统环境|】三.不定词副词的用法(2025-10-21 03:53)
【系统环境|】歌曲中汉字的信息量真的是吊打英语(2025-10-21 03:52)
【系统环境|】跟着《肖申克的救赎》学英语(002)--安迪法庭受审(2025-10-21 03:52)
【系统环境|】词根词缀-前缀1-27: de-(2025-10-21 03:50)
手机二维码手机访问领取大礼包
返回顶部