24.11.11 JavaScript1

JavaScript(简称js)是⼀种描述语⾔,基于对象和事件驱动的脚本语⾔
JavaScript特点:脚本语⾔(⼀种轻量级的编程语⾔)
⼀种解释性语⾔(⽆需预编译)
被设计为向HTML⻚⾯添加交互⾏为
运⾏于客户端(浏览器)

注意:js是多种语言语法组合而成 所以形成了自己的独特语法

2.js组成

ECMAScript (简称为ES) ,由ECMA组织定期维护更新.ES6之后添加了很多实用的新语法结构.

DOM (文档对象模型). js中把hmtl文档描述为DOM树,通过js对文档中的元素和属性进行修改,从而达到动态的效果.是js交互效果非常重要的部分

BOM(浏览器对象模型).通过JS对浏览器本身的功能进行操作 例如刷新页面,控制历史记录,打开关闭窗口等

3.js引入方式

在html中编写js的方式:

js引入方式
1.使用script标签 编写js代码                                       调试代码使用
<script>// script 脚本console.log("hello javascript!!!!!")
</script>
2.使用script标签带src属性 引入js文件                               上线使用
<script src="./js/myjs.js"> 这里写代码无效 </script>注意 如果script标签带src属性 则标签体无效
3.在元素上直接编写js代码  特例javascript:void(0) 禁止元素默认行为    用不到  例如a标签当中###哪里都不会跳转,此处javascript:void(0)在网址处不会传值###
了解即可

注意:

html文档是从上到下加载运行

4.js变量规则

变量  声明
js变量是弱类型声明不需要指明变量类型  赋值时 根据值的类型来决定类型使用统一的关键字来声明var       老的变量关键字let       新的变量关键字const     新的常量关键字变量名   使用多单词+驼峰不要与关键字保留字冲突 示例:
let myStr;

5.js数据类型

js设计的初衷是容易上手(好学)(易学难精)

1 数字类型 number 整型 浮点型

let myNum = 10;
let myNum = 10.1;
console.log(myNum);
console.log(typeof myNum);

2 布尔型 boolean true/false

let myBol = true;
console.log(myNum);
console.log(typeof myNum);let myBol = false;
console.log(myBol);
console.log(typeof myBol);

3 字符串 string '' "" 都是字符串

​ `` 模板字符串 通过${变量} 可以拼接变量

let myStr = 'a'
let myStr = "a"
let myStr = `a`拼接:
let tempNum = 10;
//let myStr = 'a'+tempNum+'a';
//模板字符串 通过${变量} 可以拼接变量
let myStr =`a${tempNum}a`;

4 未定义 undefined 未定义 /未初始化(未赋值)

​ 如果是 未赋值 值是undefined 类型是undefined

​ 如果是 未定义(没有声明 直接使用) 会报错 类型是undefined

let myVal;console.log(myVal);
console.log(typeof myVal);不定义直接用
console.log(myVal);        报错
console.log(typeof myVal); 打印类型 undefined

5 Object 其他各种对象 都属于object

let myDate = new Date();
console.log(myDate);
console.log(typeof myDate);let myArr = [1,2,3];
console.log(myArr);
console.log(typeof myArr);

6 function 函数 函数对象

let myFun = function(){console.log(1111);
}myFun()console.log(typeof myFun);

6.数据类型转化

注意: 从页面取出来数据 都是字符串类型

let textVal = document.getElementById("mySpan").innerHTML;

console.log(textVal);

所以js中需要数据计算时 经常使用类型转换

1.主动类型转换函数
parseInt   转整型数据let myStr = '110';let newNum = parseInt(myStr);console.log(typeof newNum);注意:let myStr = 'A110';let newNum = parseInt(myStr);转完得到结果NaN(not a number) 数字类型的特殊值 不是数字

parseFloat 转浮点数据let myStr = '110.1';let newNum = parseFloat(myStr);console.log(typeof newNum);注意:let myStr = 'A110.1';let newNum = parseFloat(myStr);转完得到结果NaN(not a number) 数字类型的特殊值 不是数字
2.内置类型转换(了解)
    //内置类型转换//可以转成数字的字符串  与   数字之间     等同的//bol值 true/false    与   数字之间1/0  等同的//为了保险 尽量少用内置类型转换
    let tempStr = '10';let tempNum = 10;console.log(tempStr == tempNum);let tempBol = false;let tempNum2 = 0;console.log(tempBol == tempNum2);console.log(!0);//true的简化写法

js代码经常需要做代码压缩 代码压缩时会出现简化写法

代码压缩通过特定工具完成 不需要编码时自己写

7.运算符

   /*算数运算符   + 加法运算  拼接字符串- 减法运算* 乘法运算/ 除法运算  Infinity(无限)   NaN 不是数字% 取模运算 ++  自增--  自减 赋值运算符  +=        数字加 或 字符串拼接-=        运算完赋值*=/=%=比较运算符  ===      比较值 和 类型 有一个不同返回false==       比较值因为js有内置类型转换逻辑运算符 &&       有一个是false 总结果是fasle||       有一个是true  总结果是true!        bol值取反*/

注意:

js中number计算非常容易丢精度 toFixed(位数) 保留指定位数
示例:
let myNum =0.1+0.2;
console.log(parseFloat(myNum.toFixed(1)) +0.1);转数字        保留位数
    let myNum =0.1+0.2;console.log(parseFloat(myNum.toFixed(1)) +0.1);let myNum2 = 1;myNum2 +='1';console.log(myNum2);let num1 = 1;let num2 = 2;console.log(num1!=num2);let tempStr = '10';let tempNum = 10;console.log(tempStr == tempNum);   //trueconsole.log(tempStr === tempNum);  //false

8条件 循环语句

条件语句:

if 结构体 (通用性强)
范围条件判断 精确条件判断

    if(bol值)   单分支if(bol值)   双分支elseif(bol值)            多分支else if(myScore<80)else

示例:

    let myScore = 96;if(myScore<60){console.log("去跟壮汉小gege吃饭....");}else if(myScore<80){console.log("去跟小(姐姐)吃饭吃饭....");}else{console.log("去跟乔碧萝...吃饭吃饭....");}

switch 结构体

​ 精确判断条件

​ 多分支时 语法结构更清晰

 switch(myScore){case 'A': console.log("ps5 pro!!");break;case 'B': console.log("华为手机");break;case 'C': console.log("红米手机");break;case 'D': console.log("发一个肥皂");break;default:console.log("律师函警告");}
    let myScore = 'SSR';switch(myScore){case 'A': console.log("ps5 pro!!");break;case 'B': console.log("华为手机");break;case 'C': console.log("红米手机");break;case 'D': console.log("发一个肥皂");break;default:console.log("律师函警告");}

循环语句:

for 结构体 (一般用在已知次数的循环)

    基础for循环for(let i = 0; i < 10; i++){console.log(i);}其他for结构体for...in  for(let x in myArr){   x是索引console.log(myArr[x]);}for...of               x是遍历的数据for(let x of myArr){console.log(x);}

示例:

    for(let i = 0; i < 10; i++){console.log(i);}//console.log(i);let myArr = ['a','b','c']// for(let i = 0; i < myArr.length; i++){//     console.log(myArr[i]);// }for(let x in myArr){console.log(myArr[x]);}for(let x of myArr){console.log(x);}

while结构体 (用在未知次数的循环上)

    let bol = true;while(bol){//dosomething.....//if(xxx) 结束循环 bol = false}

示例:

输出乘法口诀表到页面

document.write("<table border='1'>")
for(let x = 1;x<=9;x++){document.write("<tr>")for(let y = 1;y<=x;y++){document.write("<td>")document.write(`${y}x${x}=${x*y}`)document.write("</td>")}document.write("</tr>")
}
document.write("</table>")

9函数

系统函数

    parseInt    转整型parseFloat  转浮点型isNaN      !isNaN("10") 检测是否纯数字eval       把字符串转成算式并计算
    // console.log(!isNaN("10"));// console.log(eval('2+3/0')); 

自定义函数

自己封装函数给自己使用

两种函数格式:

1声明式函数

    声明式函数对象:function 函数名(参数列表 ...){doSomething.......//如果需要返回值 直接加returnreturn 返回的数据;}
     function myFun(num1,num2){//     //debugger//    // console.log(num1+num2);let newNum = num1+num2;return newNum;}myFun(1,2)
结果是3

2匿名函数

    匿名函数定义:let 变量名(函数名) = function(参数列表...){//console.log(a+b);return a+b}
    let myFun = function(a,b){//console.log(a+b);return a+b}myFun(1,2)结果是3

变量作用域:

    变量作用域全局变量  整个页面都可以使用 可以在多个函数内共享  let num=10;局部变量  函数内可以使用函数内如果没声明直接使用的变量 会被js解析器补全为全局变量(不要用这个特性)

注意点:

​ 1.js中 如果函数名重复 会发生覆盖(注意函数名不要重复 不要跟变量重复)

​ 2.实参与形参可以不对应 执行结果与预期会不符(使用时 形参与实参个数对应)

打断点(慢慢习惯) 沉下心仔细看代码:

debugger; 如果触发代码时会进断点

F11 一行一行看

F8 跳过断点

10事件

js中触发函数的机制 定义出了用户交互的常用事件 来触发自定义函数

1.元素 事件 函数之间的关系
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title></head><body><input type="button" value="点我" onclick="myTest()">
</body><script>/*html元素  --- >  事件   --- >  函数  <input type="button" value="点我" onclick="myTest()">function myTest(){console.log("运行了......");}*/ function myTest(){console.log("运行了......");}</script></html>
2.js中常用事件
onclick 点击事件 鼠标点击

注意:

编写js交互效果的流程(套路)

    考虑流程1 在哪个元素上 加 哪个事件  触发哪个函数DOM中的内容2.获取哪个元素  操作哪个属性 属性改成什么值获取元素doucument.getElementById("id值")  可以获取页面中所有元素 需要搭配ID使用操作属性元素.属性  DOM通用操作写操作  元素.属性 = xxxx读操作  元素.属性html元素的属性都可以操作常用属性: 属性值 参考属性本身的规则value  表单元素的值type   表单元素类型id     元素idstyle  style中还有其他的子样式 参考csscolor 文字颜色         backgroundColor 背景颜色 innerHTML 标签体中的内容 适用于所有的双标签

示例:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.mycls{width: 100px;height: 100px;border: 1px solid black;}</style></head><body><input id="myText" type="text" value="拜登" ><input type="button" value="换总统" onclick="changeP(this)" ><hr/><div id="mydiv" class="mycls"></div><input type="button" value="换颜色" onclick="changeColor()" ><hr/><h1 id="myTitle">总统选举进行中........</h1><input type="button" value="选举结束" onclick="changeTitle()">
</body><script>function changeP(myOjb){console.log(myOjb);console.log(1111);let myEle = document.getElementById("myText");myEle.value = "特朗普";myEle.type = "button";console.log( myEle.id);}function changeColor(){let myDiv = document.getElementById("mydiv");console.log(myDiv);myDiv.style.backgroundColor = "#FF0000"}function changeTitle(){console.log(111);let myTitle =  document.getElementById("myTitle");console.log(myTitle);myTitle.innerHTML = "biubiubiu.....特朗普...."}</script></html>
onmouseover 鼠标移入
onmouserout 鼠标移出
    js中 经常有效果切换的场景(执行的代码相同 赋值不同)函数中加上形参调用时 传入实参 onmouseover="changeBGC('green')" 实参数据类型如果是字符串 'green'如果是数字    123如果是bol值   true

示例:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.mycls{width: 100px;height: 100px;border: 1px solid black;}</style></head><body><!-- <div id="myDiv" class="mycls" onmouseover="changeBGC('green')" onmouseout="changeBGC('white')" ></div> --><div class="mycls" onmouseover="changeBGC('green',this)" onmouseout="changeBGC('white',this)" ></div></body><script>function changeBGC(currentColor,myObj){//console.log(document.getElementById("myDiv"));console.log(currentColor,myObj);myObj.style.backgroundColor = currentColor;}// function changeBGC(currentColor){//     //console.log(document.getElementById("myDiv"));//     console.log(currentColor); //     document.getElementById("myDiv").style.backgroundColor = currentColor;// }// function changeBGC2(){//     //console.log(document.getElementById("myDiv"));//     document.getElementById("myDiv").style.backgroundColor = "white";// }//changeBGC("green")</script></html>
onfocus 获得焦点
onblur 失去焦点

焦点事件 主要用在表单元素上

​ 输入框 同一时间 只有一个框获得输入提示符 获得输入提示符的叫获得焦点

​ 通常用鼠标触发 也可以被tab键触发

示例:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title></head><body><input type="text"  onfocus="changeTextColor('blue',this)" onblur="changeTextColor('black',this)"><br><input type="text"  onfocus="changeTextColor('blue',this)" onblur="changeTextColor('black',this)"><br><input type="text"  onfocus="changeTextColor('blue',this)" onblur="changeTextColor('black',this)"><br>
</body><script>/* 焦点事件 主要用在表单元素上输入框 同一时间  只有一个框获得输入提示符 获得输入提示符的叫获得焦点onfocus  获得焦点onblur   失去焦点函数合并通过this 让多个元素复用函数*/function changeTextColor(myColor,myObj){myObj.style.color = myColor;}</script></html>

注意:

实参传this

可以表示当前发生事件的元素

    如果修改的元素 与触发的元素是同一个 (了解)此时可以传this this发生事件的元素实参传this  表示的是发生事件的元素

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

PDF24:多功能 PDF 工具使用指南

PDF24&#xff1a;多功能 PDF 工具使用指南 在日常工作和学习中&#xff0c;PDF 是一种常见且重要的文档格式。无论是查看、编辑、合并&#xff0c;还是转换 PDF 文件&#xff0c;能够快速高效地处理 PDF 文档对于提高工作效率至关重要。PDF24 是一款免费、功能全面的 PDF 工具…

计算机的错误计算(一百五十一)

摘要 探讨 MATLAB 中反正弦 asin 与反余弦 acos 函数的计算精度问题。 例1. 已知 计算 及 直接贴图吧&#xff1a; 另外&#xff0c;16位的正确值分别为 0.1570785896071048e1、0.1043072384837152e-4、-0.1570785896071048e1 与 0.3141582222865945e1&#xff08;I…

Lua进阶用法之Lua和C的接口设计

一&#xff1a;lua/c的接口编程 首先skynet、openresty 都是深度使用 lua 语言的典范&#xff1b;学习 lua 不仅仅要学习基本用法&#xff0c;还要学会使用 c 与 lua 交互&#xff0c;这样才学会了 lua 作为胶水语言的精髓&#xff0c;下面看一下他们两个的调用过程。 虚拟栈&a…

macOS 下的 ARM 裸机嵌入式开发入门- 第二部分:实现第一个裸机应用并且调试

1、准备二进制运行程序镜像 利用 QEMU 仿真一个完整的系统&#xff0c;并创建最简单的“Hello world!”示例。 QEMU 模拟器支持 VersatilePB 平台&#xff0c;该平台包含一个 ARM926EJ-S 核心&#xff0c;以及其他外设&#xff0c;四个 UART 串行端口&#xff1b;特别是第一个…

【网络面试篇】其他面试题——Cookie、Session、DNS、CDN、SSL/TLS、加密概念

目录 一、HTTP 相关问题 1. Cookie 和 Session 是什么&#xff1f; &#xff08;1&#xff09;Cookie &#xff08;2&#xff09;Session 2. Cookie 的工作原理&#xff1f; 3. Session 的工作原理&#xff1f; 4. Cookie 和 Session 有什么区别&#xff1f; 二、其他问…

【数值分析】复习1---牛顿迭代法

首先&#xff0c;我们先来回顾一下牛顿迭代法的概念。 这里注意的是&#xff0c;牛顿迭代法是一种线性方法&#xff0c;它在点 x k x_k xk​处进行线性展开&#xff0c;而且展开成一阶泰勒公式&#xff01;注意是一阶&#xff0c;不是二阶&#xff0c;不是更高阶&#xff0c;所…

文本语义分块、RAG 系统的分块难题:小型语言模型如何找到最佳断点

文本语义分块、RAG 系统的分块难题&#xff1a;小型语言模型如何找到最佳断点&#xff1f; 转自jina最新的关于文本语义分块的分享和模型 之前我们聊过RAG 里文档分块 (Chunking) 的挑战&#xff0c;也介绍了 迟分 (Late Chunking) 的概念&#xff0c;它可以在向量化的时候减…

PostgreSQL中如果有Left Join的时候索引怎么加

在PostgreSQL中&#xff0c;当你的查询包含多个LEFT JOIN和WHERE条件时&#xff0c;合理地添加索引可以显著提高查询性能。以下是一些具体的优化步骤和建议&#xff1a; 1. 分析查询 使用 EXPLAIN ANALYZE 命令分析你的查询&#xff0c;了解查询的执行计划&#xff0c;识别出连…

温度虽寒,其道犹变:OpenAI接口之温度参数设置为0,为何每次回复仍有不确定性?

问题描述 调用openai API&#xff0c;使用templature 0&#xff0c;每次返回的内容仍有一些不同 >>> client OpenAI( ... api_keyapi_key, ... base_urlapi_base) #第一次尝试 >>> response client.chat.completions.create(mo…

vue-h5:在h5中实现相机拍照加上身份证人相框和国徽框

参考&#xff1a; https://blog.csdn.net/weixin_45148022/article/details/135696629 https://juejin.cn/post/7327353533618978842?searchId20241101133433B2BB37A081FD6A02DA60 https://www.freesion.com/article/67641324321/ https://github.com/AlexKratky/vue-camer…

国标GB28181视频平台EasyCVR私有化部署视频平台对接监控录像机NVR时,录像机“资源不足”是什么原因?

EasyCVR视频融合云平台&#xff0c;是TSINGSEE青犀视频“云边端”架构体系中的“云平台”系列之一&#xff0c;是一款针对大中型项目设计的跨区域、网络化、视频监控综合管理系统平台&#xff0c;通过接入视频监控设备及视频平台&#xff0c;实现视频数据的集中汇聚、融合管理、…

【Android、IOS、Flutter、鸿蒙、ReactNative 】标题栏

Android 标题栏 参考 Android Studio版本 配置gradle镜像 阿里云 Android使用 android:theme 显示标题栏 添加依赖 dependencies {implementation("androidx.appcompat:appcompat:1.6.1")implementation("com.google.android.material:material:1.9.0")…

歌尔微拟赴港IPO,揭示AI+终端升级的供给革命

1959年&#xff0c;美国物理学家理查德费曼在他著名的演讲“底部有足够的空间”中&#xff0c;首次提出了将机器小型化到原子和分子尺度的想法。这个充满想象力的观点&#xff0c;为世界科技发展开启了一扇新的窗口。 时至今日&#xff0c;应这一理念而生的MEMS产品已经成为各…

ROS第七梯:ROS+VSCode+Python环境配置

第一步:Python版本的ROS项目和C++版本的ROS项目前期创建功能包的步骤基本一致,具体可参考第二章。 第二步:在功能包的目录下创建一个与src目录平级的文件夹,名称写作scripts: 第三步:在scripts文件夹下创建python的节点代码文件,此处以一个订阅节点代码文件为例:

洛谷解题日记||基础篇3

#include <iostream> #include <iomanip> // 用于设置输出格式 using namespace std;double a, b, c, d;// 定义方程 f(x) ax^3 bx^2 cx d double fc(double x) {return a * x * x * x b * x * x c * x d; }int main() {double l, r, m, x1, x2;int s 0;/…

软件测试学习记录 Day1

根据黑马程序员最新版的软件测试课程所做的笔记&#xff0c;需要原件后台私信&#xff1a; 练习提取测试点&#xff1a; 博主的答案&#xff0c;有不一样看法的可评论区讨论&#xff1a;

代码随想录刷题记录(二十七)——55. 右旋字符串

&#xff08;一&#xff09;问题描述 55. 右旋字符串&#xff08;第八期模拟笔试&#xff09;https://kamacoder.com/problempage.php?pid1065字符串的右旋转操作是把字符串尾部的若干个字符转移到字符串的前面。给定一个字符串 s 和一个正整数 k&#xff0c;请编写一个函数&…

FreeRTOS 24:事件组EventGroup等待、清零、获取操作

等待事件标志位xEventGroupWaitBits() 既然标记了事件的发生&#xff0c;那么我怎么知道他到底有没有发生&#xff0c;这也是需要一个函数来获 取 事 件 是 否 已 经 发 生 &#xff0c; FreeRTOS 提 供 了 一 个 等 待 指 定 事 件 的 函 数 — — xEventGroupWaitBits()&…

信息安全数学基础(47)域的结构

一、域的定义 设F为一个非空集合&#xff0c;在其上定义两种运算&#xff1a;加法和乘法。如果这两种运算在集合上封闭&#xff0c;且满足以下条件&#xff0c;则称F对于规定的乘法和加法构成一个域&#xff1a; F中所有元素对于加法形成加法交换群&#xff0c;即加法满足交换律…

#渗透测试#SRC漏洞挖掘#CSRF漏洞的防御

免责声明 本教程仅为合法的教学目的而准备&#xff0c;严禁用于任何形式的违法犯罪活动及其他商业行为&#xff0c;在使用本教程前&#xff0c;您应确保该行为符合当地的法律法规&#xff0c;继续阅读即表示您需自行承担所有操作的后果&#xff0c;如有异议&#xff0c;请立即停…