一、JavaScript 的事件流模型都有什么,以及怎么阻止他们?
1.事件流模型:
- 事件冒泡:当前元素接收事件,并向上传播
- 事件捕获:从DOM根元素开始从外到里去执行对应的事件
- Dom事件流: 事件捕获阶段——>目标阶段——>冒泡阶段
在冒泡型事件流中click事件传播顺序为: div —> body —> html—> document
在捕获型事件流中click事件传播顺序为: document—>html—> body ——> div
DOM标准规定事件流包括三个阶段:事件捕获阶段、处于目标阶段和事件冒泡阶段。
- 事件捕获阶段:实际目标 (div) 在捕获阶段不会接收事件。也就是在捕获阶段,事件从document 到 html 再到 body 就停止了。
- 处于目标阶段:事件在div上发生并处理。但是事件处理会被看成是冒泡阶段的一部分。
- 冒泡阶段:事件又传播回文档。
2.如何阻止
阻止事件冒泡:事件对象.stopPropagation()
阻止默认事件:事件对象.preventDefault()
二、split() 和 join()的区别
1.str.split('指定分隔符')切割字符串,返回一个数组
const str = '100,000,000'
console.log(str.split(',')) // ['100', '000', '000']
2.join('指定分隔符') 把数组元素转换为字符串
const arr = ['red', 'blue', 'green']
console.log(arr);
document.write(arr)
//把数组元素转换为字符串
console.log(arr.join('~')) //red~blue~green
三、简述创建函数的几种方式
1、通过function函数声明的方式创建
function fn1(num1,num2){
return num1+num2
}
2.用函数表达式的方式创建
const fn2 = function(num1,num2){
return num1*num2
}
3.通过函数对象方式创建,创建的是匿名函数
const fn3 = new Function('形参1','形参2'){
return 返回值
}
四、例举强制类型转换和隐式类型转换
强制类型转换:
- 转化成字符串: toString() String()
- 转换成数字: Number()、parseInt()、 parseFloat()
- 转换成布尔类型: Boolean()
隐式类型转换
- 加号拼接字符串(字符串和非字符串相加时隐式转换为字符串) 如:
const str = "" + 18 - 减乘除(-*/) :非number形运用算术运算符,会隐式转换为number型
五、JS数据类型有哪些
简单数据类型有:string,number,Boolean,undefined,null;
复杂数据类型: (对象:)Object、Array、Date