前端常见面试题十六
目录:
1、列举三种强制类型转换和两种隐式类型转换
2、JavaScript typeof返回哪些数据类型
3、window.onload 和document.ready的区别
4、== 和 ===的区别
5、style标签写在body前和body后有什么区别
1、列举三种强制类型转换和两种隐式类型转换
强制
1、Number(参数)把任何类型转换成数值类型
2、parseInt(参数1,参数2)将字符串转换成整数
3、parseFloat()将字符串转换成浮点数字
4、string(参数):可以将任何类型转换成字符串
5、Boolean()可以将任何类型的值转换成布尔值
隐式类型转换
(1)、四则运算
加法运算符+是双目运算符,只要其中一个是string类型,表达式的值便是一个String。对于其他的四则运算,只有其中一个是Number类型,表达式的便是一个Number。对于非法字符的情况通常会返回NaN:'1''a' // => NaN,这是因为parseInt(a)值为NaN,1NaN还是NaN
(2)、判断语句
判断语句中的判断条件需要是 Boolean类型,所以条件表达式会被隐式转换为Boolean。其转换规则则同Boolean的构造函数。比如:
var obj = {};if(obj){
while(obj);
}
(3).Native代码调用
JavaScript宿主环境都会提供大量的对象,它们往往不少通过JavaScript来实现的。JavaScript给这些函数传入的参数也会进行隐式转换。例如BOM提供的alert方法接受String类型的参数:alert({a:1}); //=>[object Object]
2、JavaScript typeof返回哪些数据类型
undefined string boolean number symbol(ES6) Object Function
3、window.onload 和document.ready的区别
$(document).ready和window.onload都是在都是在页面加载完执行的函数,大多数情况下差别不大,但也是有区别的。
$(document).ready:是DOM结构绘制完毕后就执行,不必等到加载完毕。 意思就是DOM树加载完毕,就执行,不必等到页面中图片或其他外部文件都加载完毕。并且可以写多个.ready。
window.onload:是页面所有元素都加载完毕,包括图片等所有元素。只能执行一次。
所以,$(document).ready的执行时间要早于window.onload。并且可以写多个
//以下代码无法正确执行:
window.onload = function()
{
alert(“text1”);
};
window.onload = function()
{
alert(“text2”);
};
//结果只输出第二个 能同时编写多个
//以下代码正确执行:
$(document).ready(function()
{
alert(“Hello World”);
});
$(document).ready(function()
{
alert(“Hello again”);
});
//结果两次都输出
4、== 和 ===的区别
== 代表是equality 等同,=== 代表是identity 恒等
==, 两边值类型不同的时候,要先进行类型转换,再比较。
===,不做类型转换,类型不同的一定不等。
最后 :==先转换类型再比较,===先判断类型,如果不是同一类型直接为false。
5、style标签写在body前和body后有什么区别
写在body前
写在head标签中利于浏览器逐步渲染
写在body后
写在body标签后由于浏览器以逐行方式对html文档进行解析,当解析到写在尾部的样式表(外联或写在style标签)会导致浏览器停止之前的渲染,等待加载且解析样式表完成之后重新渲染,在windows的IE下可能会出现FOUC现象(即样式失效导致的页面闪烁问题)