1.JS事件流模型都有什么,以及怎么阻止他们、2.split() 和 join()的区别、3.创建函数的几种方式、4.强制类型转换和隐式类型、5.JS数据类型

35 阅读2分钟

一、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