函数 DOM BOM

简介: 函数 DOM BOM

函数

函数的定义

function后面没有名字匿名函数,使用一个变量来接受
image.png

image.png

注意事项

函数也有函数提升,函数表达式不能被提升,即在函数表达式之前不能调用函数,报错

image.png
形参和实参数量不同

image.png

递归

要有明确的终止条件,直到运行到不需要在递归的项

//斐波那契数列
function fib(n){
   
   
//第一项和第二项都是1
if(n==0||n==1) return 1
return fib(n-1)+fib(n-2)
}

局部变量

初次给变量赋值时,如果没有加var/let/const 则将定义全局变量

function fun(){
   
   
a=3;
}
fun();
console.log(a)//3

闭包

  • 闭包是函数本身和该函数声明时所处的环境状态的组合。
  • 每次创建函数时都会创建闭包
  • 当闭包产生时,函数所处环境的状态会始终保持在内存中,不会在外层函数调用后被自动清除。这就是闭包的记忆性。
  • 用途:模拟私有变量
  • 注意:不能滥用闭包,否则会造成网页的性能问题,严重时可能导致内存泄露。所谓内存泄漏是指程序中己动态分配的内存由于某种原因未释放或无法释放。
function addCount(){
   
   
var count = 0;
return function(){
   
   
count++;
console.log(count);
};
}
var fun1 = addCount();
var fun2 = addCount();
//调用两次外部函数,返回两个互不相关的内部函数
fun1()//1
fun2()//1
fun2()//2
fun1()//2

立即执行函数IIFE

(function(){})()

  • for循环的i是全局变量
    image.png

image.png

DOM

nodeType

image.png

获取节点的方法

image.png
都要在小括号(" "),不一定是document,也可以是其他node节点
getElementById:直接写id名字不用加#号,如果页面上有相同id的元素,则只能得到第一个
querySelector:页面上有相同id的元素,则只能得到第一个,

var p = document.querySelector('#box p:nth-child(1)');

延迟运行

image.png

节点关系

image.png

  • 文本节点,空白文本节点也是节点

只考虑元素节点

image.png

image.png

image.png
包括空白文本节点

innerhtml

image.png

改变元素节点的css样式

image.png

image.png
如何改变元素节点的HTML属性
image.png

添加节点

image.png
孤儿节点
image.png
插入节点

image.png

image.png
移动节点

image.png
删除节点

image.png
克隆节点

image.png

事件监听

image.png

image.png

事件对象

image.png

image.png

image.png

image.png

image.png

image.png

事件委托

image.png
注意事项
image.png

image.png

定时器,延时器

image.png

image.png

image.png
延时器类似

函数节流

image.png
image.png

无缝连续滚动

image.png

 <style>
    * {
   
   
      padding: 0;
      margin: 0;
    }
    .contain {
   
   
      height: 200px;
      width: auto;
      overflow: hidden;
    }
    li {
   
   
      height: 40px;
      width: auto;
    }
    #list {
   
   
      position: relative;
      top: 0;
      transition: top 2s linear 0s;
    }
  </style>
  <body>
    <div class="contain">
      <ul id="list">
        <li style="background-color: #234134">1</li>
        <li style="background-color: #2fffff">2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
      </ul>
    </div>
    <script>
      var thistop = 0;
      var op = document.querySelector(".contain");
      var op1 = document.querySelector("#list");
      op1.innerHTML += op1.innerHTML;

      clearInterval(po); //设表先关,防止动画累计
      //不能加var,要不然变成了局部变量,清除不了
   po = setInterval(function () {
   
   
        op1.style.transition = "top 1s linear 0s";
        if (thistop <= -200) {
   
   
          op1.style.transition = "none";
          op1.style.top = 0;
          thistop = -40;
          //设置一个延时器,这个延时器时间可以是0,虽然是0,但是可以让我们过渡先是瞬间消失,然后再加上
          setTimeout(function () {
   
   
            op1.style.transition = "top 1s linear 0s";
            op1.style.top = thistop + "px";
          }, 0);
        } 
        else {
   
   
          thistop -= 40;
          op1.style.top = thistop + "px";
        }
      }, 2000);
    </script>
  </body>

BOM(浏览器对象模型)

window对象

image.png

image.png

image.png
image.png

image.png

Navigator

image.png

History

image.png

Location

image.png

image.png

image.png

相关文章
|
2月前
|
缓存 编解码 JavaScript
DOM 和 BOM 在项目中应用时的性能优化方法
【10月更文挑战第19天】总之,优化 DOM 和 BOM 的性能需要综合考虑多个方面,通过合理的设计和技术手段,提升项目的运行效率和用户体验。在实际开发中,要不断地进行性能优化实践,以适应不断变化的需求和技术发展。
|
2月前
|
JavaScript 安全 物联网
DOM 和 BOM 在项目中的应用
【10月更文挑战第19天】在现代网页开发和应用项目中,DOM(文档对象模型)和 BOM(浏览器对象模型)扮演着至关重要的角色。它们为开发者提供了与网页文档和浏览器环境进行交互的能力,使项目能够实现丰富的功能和用户体验。
|
2月前
|
XML 编解码 JavaScript
DOM(文档对象模型)和 BOM(浏览器对象模型)
【10月更文挑战第19天】在前端开发中,理解 DOM(文档对象模型)和 BOM(浏览器对象模型)是至关重要的。它们是 Web 开发的基础,为我们提供了与网页文档和浏览器进行交互的能力。
|
3月前
|
XML JavaScript 前端开发
学习react基础(1)_虚拟dom、diff算法、函数和class创建组件
本文介绍了React的核心概念,包括虚拟DOM、Diff算法以及如何通过函数和类创建React组件。
32 3
|
3月前
|
XML 缓存 JavaScript
提升对前端的认知,不得不了解Web API的DOM和BOM
该文章强调了在前端开发中理解和掌握DOM(文档对象模型)和BOM(浏览器对象模型)的重要性,并介绍了它们的相关操作和应用。
提升对前端的认知,不得不了解Web API的DOM和BOM
|
3月前
|
XML 移动开发 JavaScript
js中BOM和DOM总结(基础篇)
文章总结了JavaScript的BOM和DOM知识点,包括window、screen、location、history、navigator对象,以及消息框、计时器和cookie。同时,介绍了DOM的概念、节点获取和修改方法,以及事件处理。
js中BOM和DOM总结(基础篇)
|
4月前
|
监控 JavaScript 前端开发
Vue3组合式函数(监听DOM尺寸 useResizeObserver)
本文介绍如何使用 `ResizeObserver` API 编写 Vue3 的通用组合式函数 `useResizeObserver`,该函数可方便地观察一个或多个元素的尺寸变化,并执行指定回调。`ResizeObserver` 接口用于监控 `Element` 或 `SVGElement` 的尺寸变化,避免了无限回调循环问题。
297 0
Vue3组合式函数(监听DOM尺寸 useResizeObserver)
|
4月前
|
编解码 JavaScript 前端开发
JS逆向浏览器脱环境专题:事件学习和编写、DOM和BOM结构、指纹验证排查、代理自吐环境通杀环境检测、脱环境框架、脱环境插件解决
JS逆向浏览器脱环境专题:事件学习和编写、DOM和BOM结构、指纹验证排查、代理自吐环境通杀环境检测、脱环境框架、脱环境插件解决
128 1
|
6月前
|
前端开发 JavaScript 程序员
探索JavaScript宝库:打开基础知识与实用技能之门(数据类型与变量+ 条件与循环+函数与模块+DOM+异常+ES6)
探索JavaScript宝库:打开基础知识与实用技能之门(数据类型与变量+ 条件与循环+函数与模块+DOM+异常+ES6)
34 0
|
7月前
|
XML JavaScript 前端开发
JavaScript简介&引入方式(JavaScript基础语法、JavaScript对象、BOM、DOM、事件监听)
JavaScript简介&引入方式(JavaScript基础语法、JavaScript对象、BOM、DOM、事件监听)
45 2