前端(九)js介绍(2)

js介绍(2)

文章目录

  • js介绍(2)
  • 一、函数
    • 1.1函数的两种形式
    • 1.2函数的作用域
    • 1.3声明与提升
  • 二、bom操作
  • 三、dom操作

一、函数

1.1函数的两种形式

//有参函数
//js中的函数只能返回一个值,如果要返回多个需要放在数组或对象中
function func(a,b){return a+b
}
func(1,2)//匿名函数
(function(a,b){return a+b})(1,2)//arguments参数
//arguments存放传入的参数,arguments[0]为第一个参数以此类推,arguments.length表示传入的参数个数
(function(a,b){console.log(arguments[0],arguments[1],arguments.length)})(1,2)

1.2函数的作用域

js中变量的查询和python一样,先从局部找,找不到则会取上一层找以此类推直到全局为止。另外函数的作用域在函数定义阶段就已经确定了。

var city = "BeiJing";
function Bar() {console.log(city);
}
function f() {var city = "ShangHai";return Bar;
}
var ret = f();
ret(); 
<<<"BeiJing"

另外如果函数内不使用var直接定义变量,变量会被视为全局变量。

a=1
function f1(){a=100}
f1()
console.log(a)
<<<100

let定义的变量作用域会被限定在{}内。

if(true){let a=10}
console.log(a)
<<<报找不到变量a的错误

另外js中和python一样由闭包函数

var a=[]
for(var i=0;i<5;i++){function outter(x){function inner(){console.log(x)}return inner}a.push(outter(i))
}
a.forEach(function(val){val()})
<<<0
<<<1
<<<2
<<<3
<<<4

上面的闭包函数中inner函数的变量x作用域在函数定义阶段就已经确定为outter函数的形参x,而由于inner函数中引用了变量x,因此原本在outter函数运行结束就应该释放的局部变量x会保持下来,这样闭包函数就完成了将外部参数保存至内部函数的功能。

1.3声明与提升

在js中代码是从上往下一次执行的,并且js中的变量的声明会被放到作用域的顶部位置,而函数的定义与声明都会放到作用域的顶部位置。

console.log(e)
var e=11;
console.log(e)
<<<undefined
<<<11

上方代码中var e=11;包含了声明和赋值两部操作,我们可以把这段代码拆为var e;e=11;其中var e;是变量声明会被放到顶部,所有上方的代码可以等价于

var e;
console.log(e)
e=11;
console.log(e)

同样的下方代码中,函数func的定义阶段存在对变量e的赋值,因此变量e为局部变量。而var e=1;中的变量声明部分会被提升到func局部作用域的顶部,因此第一个结果为undefined,第二个结果为1。

var e=99;
function func(){console.log(e)var e=1;console.log(e)
}
func()
<<<undefined
<<<1

函数的定义和声明都会被提升到顶部

func()
function func(){console.log(111)
}
func()
<<<111
<<<111

但是以下形式的函数定义应按照变量的规则来看待

console.log(func)
var func=function(){console.log(111)
}
console.log(func)
<<<undefined
<<<ƒ (){console.log(111)}

另外如果变量和函数名重复时,函数提升的优先级是高于变量提升的

console.log(f)
function f(){console.log(111)
}
var f=10;
console.log(f)
<<<ƒ f(){console.log(111)}
<<<10

二、bom操作

BOM(Browser Object Model)浏览器对象模型,主要操作的是窗口、滚动条、弹窗等一些与浏览器直接相关的功能。下面的图片是bom与dom操作的关系。
在这里插入图片描述

//bom操作中以window开头,但是window可以省略//location相关
//跳转到某页面
window.location.href="url"
//获取当前页面url
location.href
//重新加载页面
location.reload()//history相关
//后退一页
history.back()
//前进一页
history.forward()
//刷新
history.go(0)//navigator相关
//获取Web浏览器全称
navigator.appName
//获取客户端绝大部分信息
navigator.userAgent
//获取浏览器运行所在的操作系统信息
navigator.platform//screen相关
//获取可用屏幕宽度
screen.availWidth 
//获取可用屏幕高度
screen.availHeight//弹窗相关
//弹窗
alert(1)
//确认型弹窗,确定返回true,取消返回false,但是兼容性不好
var x=confirm("你确定要这么做吗?")
console.log(x)
//输入型弹窗,兼容性不好
var username=prompt("用户名:")
console.log(username);//打开页面,_blank表示在新的浏览器页面打开,self(默认)表示当前浏览器页面打开
//close表示关闭页面
var t=window.open("http://www.baidu.com","_blank", "width=400, height=400")
t.close()//浏览器窗口内部高度
innerHeight
//浏览器窗口内部宽度
innerWidth//定时器相关
//执行一次的定时器,3000单位是ms
var s1=setTimeout(function(){alert(1)},3000)
//清除定时器
clearTimeout(s1)
//循环执行的定时器,3000单位是ms
var s2=setInterval(function(){alert(1)},3000)
//清除定时器
clearInterval(s2)

三、dom操作

Dom(Document Object Model),操作的是网页的文本内容。

//根据id获取标签,返回标签,常用
document.getElementById()
//根据类名获取标签,返回数组
document.getElementsByClassName()
//根据标签名获取标签,返回数组
document.getElementsByTagName()
//根据属性名获取标签,返回数组
document.getElementsByName()

childNodes:获取所有的子节点,标签+文本
children:获取所有元素子节点,不包含文本
parentNode:获取父标签
previousSibling:获取上一个相邻标签,标签+文本
previousElementSibling:获取上一个相邻标签,不包含文本
nextSibling:获取下一个相邻标签,标签+文本
nextElementSibling:获取下一个相邻标签,不包含文本
firstChild:获取第一个子标签,标签+文本
firstElementChild:获取第一个子标签,不包含文本
lastChild:获取最后一个子标签,标签+文本
lastElementChild:获取最后一个子标签,不包含文本

使用方法:

//获取div标签的最后一个子标签
var s1=document.getElementsByTagName('div')[0].lastChild
console.log(s1)
//创建标签
var s1 = document.createElement('div');
//在末尾插入标签
var s2=document.getElementsByTagName('div')[0].lastElementChild
s2.appendChild(s1)
//在某个标签前插入标签
var s1 = document.createElement('div');
var s2=document.getElementsByTagName('div')[0]
var s3=document.getElementsByTagName('div')[0].lastElementChild
s2.insertBefore(s1,s3)
//删除标签
var s2=document.getElementsByTagName('div')[0]
var s1=document.getElementsByTagName('div')[0].lastElementChild
s2.removeChild(s1)//替换标签
var s2=document.getElementsByTagName('div')[0]
var s1 = document.createElement('div');
var s3=document.getElementsByTagName('div')[0].lastElementChild
s2.replaceChild(s1, s3); 
var s1 = document.getElementById("d1")
//获取文本内容,包括子标签内的文本,返回字符串
s1.innerText
//获取标签,返回字符串
s1.innerHTML
//添加文本,会覆盖原本内容
s1.innerText='111'
//添加标签,会覆盖原本内容
s1.innerHTML='<p>111</p>'var s1 = document.getElementById("d1");
//设置标签属性
s1.setAttribute("age","18")
//获取标签属性
s1.getAttribute("age")
//删除标签属性
s1.removeAttribute("age")
//部分标签自带的属性可以直接赋值,例如img标签的src,input、select、textarea的value
var s1 = document.getElementsByTagName('img')[0];
s1.src=''
//获取标签值
var s1 = document.getElementsByTagName('input')[0];
s1.value//class操作
var x=document.getElementById('div1')
//增加标签类
x.classList.add('col1')
//移除标签类
x.classList.remove('col1')
//判断标签是否包含类
x.classList.contains('col1')
//标签有类则删除,无类则添加
x.classList.toggle('col1')
//直接指定标签的css样式,但是css属性需要改为驼峰体
x.style.backgroundColor="red"
x.style.margin=...
x.style.marginTop=...

事件:

onclick:点击触发
ondblclick:双击触发
onfocus:聚焦触发(如鼠标点击输入框以后)
onblur:失焦触发
onchange:内容改变触发(如form表单内容变更时)
onkeydown:键盘按键按下时触发
onkeypress:键盘按键按下并松开以后触发
onkeyup:键盘按键松开时触发
onload:页面或图片完成加载后触发
onmousedown:鼠标按下时触发
onmousemove:鼠标移动时触发
onmouseout:鼠标移开某标签时触发
onmouseover:鼠标移到某标签触发
onselect:文本框中文本被选中时触发
onsubmit:确认按钮被点击时触发,form使用

使用方法:

//方式一
<div id="div1" onclick="change(this);">点我</div>
<script>function change(this) {this.style.backgroundColor="green";}
</script>//方式二,常用
<div id="div1">点我</div>
<script>var s1 = document.getElementById('div1');s1.onclick = function() {this.style.backgroundColor = 'red';}
</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/65699.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

京准科普:车辆测速网络时间同步系统的概述

京准科普&#xff1a;车辆测速网络时间同步系统的概述 采用毫秒级标准NTP时间同步服务器检定区间测速系统主要用于指导测量车辆在特定区间内的平均速度&#xff0c;以确保交通法规的严格执行&#xff1b;以下是详细的解决方案&#xff1a; 1. 系统需求分析 高精度时间同步&am…

基于单片机的多功能视力保护器(论文+源码)

1.系统设计 多功能视力保护器在设计过程中能够对用户阅读过程中的各项数据信息进行控制&#xff0c;整体设计分为亮种模式&#xff0c;分别是自动模式&#xff0c;手动模式。在自动模式的控制下&#xff0c;当单片机检测当前光照不强且有人时就开启LED灯&#xff0c;并且会根据…

掌握大数据处理利器:Flink 知识点全面总结【上】

1.Flink的特点 Apache Flink 是一个框架和分布式处理引擎&#xff0c;用于对无界和有界数据流进行状态计算。 Flink主要特点如下&#xff1a; 高吞吐和低延迟。每秒处理数百万个事件&#xff0c;毫秒级延迟。结果的准确性。Flink提供了事件时间(event--time)和处理时间(proces…

阿里巴巴国际站自养号测评的详细步骤

阿里巴巴国际站是很多外贸企业获客的重要渠道。不过随着跨境电商的迅猛发展&#xff0c;掌握有效的运营策略对于提升企业竞争力来说至关重要。其中&#xff0c;自养号测评是一种有效的运营策略&#xff0c;它可以提升店铺的曝光度。下面是一些关键步骤和注意事项。 一、自养号的…

log4j2的Strategy、log4j2的DefaultRolloverStrategy、删除过期文件

文章目录 一、DefaultRolloverStrategy1.1、DefaultRolloverStrategy节点1.1.1、filePattern属性1.1.2、DefaultRolloverStrategy删除原理 1.2、Delete节点1.2.1、maxDepth属性 二、知识扩展2.1、DefaultRolloverStrategy与Delete会冲突吗&#xff1f;2.1.1、场景一&#xff1a…

WAV文件双轨PCM格式详细说明及C语言解析示例

WAV文件双轨PCM格式详细说明及C语言解析示例 一、WAV文件双轨PCM格式详细说明1. WAV文件基本结构2. PCM编码方式3. 双轨PCM格式详细说明二、C语言解析WAV文件的代码示例代码说明一、WAV文件双轨PCM格式详细说明 WAV文件是一种用于存储未压缩音频数据的文件格式,广泛应用于音频…

三大行业案例:AI大模型+Agent实践全景

本文将从AI Agent和大模型的发展背景切入&#xff0c;结合51Talk、哈啰出行以及B站三个各具特色的行业案例&#xff0c;带你一窥事件驱动架构、RAG技术、人机协作流程&#xff0c;以及一整套行之有效的实操方法。具体包含内容有&#xff1a;51Talk如何让智能客服“主动进攻”&a…

vulnhub靶场【Hogwarts】之bellatrix

前言 靶机&#xff1a;hotwarts-dobby&#xff0c;ip地址为192.168.1.69 攻击&#xff1a;kali&#xff0c;ip地址为192.168.1.16 都采用虚拟机&#xff0c;网卡为桥接模式 主机发现 使用arp-scan -l或netdiscover -r 192.168.1.1/24扫描发现主机 信息收集 使用nmap扫描端…

Java - 日志体系_Simple Logging Facade for Java (SLF4J)日志门面_SLF4J集成Log4j1.x 及 原理分析

文章目录 Pre官网集成Log4j1.x步骤POM依赖使用第一步&#xff1a;编写 Log4j 配置文件第二步&#xff1a;代码 原理分析1. 获取对应的 ILoggerFactory2. 根据 ILoggerFactory 获取 Logger 实例3. 日志记录过程 小结 Pre Java - 日志体系_Apache Commons Logging&#xff08;JC…

SpringCloudAlibaba实战入门之路由网关Gateway断言(十二)

上一节课中我们初步讲解了网关的基本概念、基本功能,并且带大家实战体验了一下网关的初步效果,这节课我们继续学习关于网关的一些更高级有用功能,比如本篇文章的断言。 一、网关主要组成部分 上图中是核心的流程图,最主要的就是Route、Predicates 和 Filters 作用于特定路…

在Cloudflare Workers上搭建短链接服务

项目地址&#xff1a;https://github.com/xdanielf/ShortLinkCloudflare/ 这个GitHub项目是使用 Cloudflare Workers 构建的简单 URL 缩短器。它可以缩短较长的 URL 并提供丰富的社交媒体共享预览。包括流量分析、统计&#xff0c;缩略名、缩略图设置等等。 将缩短的 URL 重定…

uniapp 微信小程序开发使用高德地图、腾讯地图

一、高德地图 1.注册高德地图开放平台账号 &#xff08;1&#xff09;创建应用 这个key 第3步骤&#xff0c;配置到项目中locationGps.js 2.下载高德地图微信小程序插件 &#xff08;1&#xff09;下载地址 高德地图API | 微信小程序插件 &#xff08;2&#xff09;引入项目…

HALCON中用于分类的高斯混合模型create_class_gmm

目录 一、创建用于分类的高斯混合模型函数二、代码和效果展示三、相关函数 一、创建用于分类的高斯混合模型函数 create_class_gmm( : : NumDim, NumClasses, NumCenters, CovarType, Preprocessing, NumComponents, RandSeed : GMMHandle)create_class_gmm创建用于分类的高斯…

移动 APP 设计规范参考

一、界面设计规范 布局原则&#xff1a; 内容优先&#xff1a;以内容为核心进行布局&#xff0c;突出用户需要的信息&#xff0c;简化页面导航&#xff0c;提升屏幕空间利用率.一致性&#xff1a;保持界面元素风格一致&#xff0c;包括颜色、字体、图标等&#xff0c;使用户在…

【竞技宝】LOL:IG新赛季分组被质疑

北京时间2024年12月31日&#xff0c;今天已经2024年的最后一天&#xff0c;在进入一月之后&#xff0c;英雄联盟将迎来全新的2025赛季。而目前新赛季第一阶段的抽签结果已经全部出炉&#xff0c;其中人气最高的IG战队在本次抽签中抽到了“绝世好签”引来了网友们的质疑。 首先介…

AIDD -人工智能药物设计- DrugChat:多模态大语言模型实现药物机制与属性的全方位预测

DrugChat&#xff1a;多模态大语言模型实现药物机制与属性的全方位预测 今天为大家介绍的是来自加州大学圣地亚哥分校谢澎涛团队的一篇论文。准确预测潜在药物分子的作用机制和性质对于推进药物发现至关重要。然而&#xff0c;传统方法通常需要为每个特定的预测任务开发专门的…

整合版canal ha搭建--基于1.1.4版本

开启MySql Binlog&#xff08;1&#xff09;修改MySql配置文件&#xff08;2&#xff09;重启MySql服务,查看配置是否生效&#xff08;3&#xff09;配置起效果后&#xff0c;创建canal用户&#xff0c;并赋予权限安装canal-admin&#xff08;1&#xff09;解压 canal.admin-1…

基于ST的VIPERGAN65和SRK1004的65W QR USB PD适配器参考设计

一&#xff1a;评估板STDES-VIPGAN65F介绍 STDES-VIPGAN65F是一款65w USB Type-C3.0电源适配器参考设计。它是一个带有独立USB PD控制器的隔离电源。评估板在初级侧实现了准谐振反激电路&#xff0c;这个转换器基于意法半导体的VIPerGaN高压转换器VIPERGAN65并带有光耦合器反馈…

遥感图像车辆检测-目标检测数据集

遥感图像车辆检测-目标检测数据集&#xff08;包括VOC格式、YOLO格式&#xff09; 数据集&#xff1a; 链接: https://pan.baidu.com/s/1XVlRTVWpXZFi6ZL_Xcs7Rg?pwdaa6g 提取码: aa6g 数据集信息介绍&#xff1a; 共有 1035 张图像和一一对应的标注文件 标注文件格式提供了…

低空经济新动力:无人机航测技术的普及与应用

在低空经济的快速发展背景下&#xff0c;航空测绘&#xff08;简称航测&#xff09;技术的应用日益广泛&#xff0c;它为城市规划、农业监测、环境评估等领域提供了重要支撑。随着技术的进步和成本的降低&#xff0c;航测技术正逐渐从专业领域走向平民化&#xff0c;这不仅为低…