1、什么是隐式类型转换?简单描述至少两种隐式类型转换的场景?
数据在代码中可以呈现出来不同的类型,从一种类型转换成另一种类型称为类型转换,JS中某些表达式里可以自动将数据从一个类型转换成另一个类型,不需要开发人员干预就完成类型转换的过程称为隐式类型转换
isNaN(dat)在进行数据判断时包含了隐式类型转换、toFixed(n)进行浮点数小数位数保留时包含了隐式类型转换、运算符进行数据运算时包含了部分数据类型隐式转换
2、什么是运算符?
让代码中的数据参与运算的符号,项目中常见的如赋值运算符、算术运算符、比较运算符、逻辑运算符等
3、下面的代码输出结果正确吗?为什么?
var res = 100 + "20"
console.log(res) // ① 120
var res2 = "30" - "5"
console.log(res2) // ② 25
var res3 = 10 - true
console.log(res3) // ③ 9
var res4 = NaN == NaN
console.log(res4) // ④ true
var res5 = null == undefined
console.log(res5) // ⑤ true
①结果错误,应该是10020,符号+两侧的数据如果包含字符串,就会自动将非字符串数据转换成字符串进行拼接
②结果正确,减法运算中将符号两侧的字符串数字转换成了数值数字进行了运算
③结果正确,减法运算中将符号两侧的布尔类型数据转换成了数值数字进行了运算
④NaN==NaN 结果是false,JavaScript语法规范中针对NaN进行了明确的规定,每个NaN都是一个独立的特殊的数值互不相等!
⑤null==undefined结果是true,JavaScript语法规范中对null和undefined进行了明确的定义,用来描述无效数据!都是无效数据所以可以通过==相等判断得到true的结果!
备注:第4个和第5个问题,只有面试价值,没有项目价值!
5、下面的代码结果正确的是?为什么?
var res1 = (20 - 10) && (100 * 10)
console.log(res1) // ① 1000
var res2 = undefined && null
console.log(res2) // ② null
var res3 = res2 || "javascript"
console.log(res3) // ③ javascript
正确,逻辑表达式|并且中,左侧表达式得到的结果如果是false直接返回;如果是true就直接返回右侧表达式结果
错误,res2中存储的数据应该是undefined
正确,逻辑表达式|或者中,左侧表达式得到的结果是false返回符号右侧的数据
6、简单写出几种获取HTML网页标签的语法?
document.getElementById(“id”)
document.getElementsByName(“name”)
document.getElementsByTagName(“tag”)
// 不支持IE8以下浏览器,存在兼容性问题
document.getElementsByClassName(“class”)
7、简述JS如何操作标签属性?
var _ele = document.getElementById(“id”)
// 获取属性
_ele.属性名称
_ele.[‘属性名称’]
// 设置属性
_ele.属性名称 = 值;
_ele[‘属性名称’] = 值;
8、简述JS如何操作标签样式?
var _ele = document.getElementById(“id”)
// 获取样式
_ele.style.行内样式名称
getComputedStyle(_ele).样式名称 或者 _ele.currentStyle.样式名称 // 兼容性
// 设置样式
_ele.style.行内样式名称 = 值;
9、简述JS如何操作标签内容?
var _ele = document.getElementById(“id”)
// 闭合标签
// 获取
_ele.innerText
_ele.innerHTML
// 设置
_ele.innerText = 数据
_ele.innerHTML = 数据
// 表单标签
// 获取
_ele.value
// 设置
_ele.value = 数据