《前端》JavaScript总结

news2024/11/24 19:11:35

文章目录

    • js的使用方法
    • 变量与运算符
      • let 与 const
      • 变量类型
      • 运算符
    • 输入与输出
      • 输入
      • 输出
      • 格式化字符串
    • 判断语句
    • 循环语句
      • for循环
      • while循环
      • do...while循环
    • 对象
    • 数组
      • 访问数组中的元素
      • 数组常用属性和函数
    • 函数
      • 定义
      • 继承
      • 静态方法
      • 静态变量
    • 事件
      • 鼠标
      • 键盘
      • 表单
      • 窗口

js的使用方法

**使用方式:**在html标签内任意位置加上<script type="module"></script> 标签即可

几种使用方法:

  • 直接在<script type="module"></script> 标签内写js代码
  • 直接引入文件<script type="module" src="/static/js/index.js"></script>
  • 将所需的代码通过import关键字引入到当前作用域(将js中的某些内容引入)

例如:

let name = "sun";
let age = 20;

function print() {
    console.log("My name is " + name);
}

export {
    name,
    print
}

在这里插入图片描述

我们可以使用name变量,但无法使用age变量
我们上面在 script 里面加上了 type=module 的好处会使得在script里面的变量只会在内部生效,避免了变量使用的冲突

**执行顺序:**类似于html与css,按从上到下的顺序执行;事件驱动执行

html、css、js之间的关系:

  1. css控制html
  2. JavaScript控制html与css
  3. 为了方便开发与维护,尽量按照上述顺序写代码。例如:不要在html中调用js中的函数

变量与运算符

let 与 const

用来声明变量,作用范围为当前作用域;let用于定义变量,const用于定义常量

例如:

let s = "sun", x = 5;

let d = {
    name: "sun",
    age: 20,
}

const n = 100;

js中的注释与 C++完全一样

变量类型

  • number:数值变量,例如1, 2.5
  • string:字符串,例如"sun", ‘yang’,单引号与双引号均可。字符串中的每个字符为只读类型(即不可修改,只可查询看);有 substr,substr(0,1)表示从下标0开始,共有一个元素;substr(2)表示从下标第二个元素开始
  • boolean:布尔值,例如true, false
  • object:对象,类似于C++中的指针,例如[1, 2, 3],{name: “sun”, age: 20},null(空)
  • undefined:未定义的变量

运算符

js中的运算符与C++相似;不同点:① ** 表示乘方 ② === 表示相等,!==表示不相等;其他相似

输入与输出

输入

从html与用户的交互中输入信息;例如通过input、textarea等标签获取用户的键盘输入,通过click、hover等事件获取用户的鼠标输入。

例如,我们现在页面里面搞个框架

    输入:
    <br>
    <textarea name="" id="" cols="30" rows="10"></textarea>
    <br>
    <button>Run</button>
    <br>
    <pre></pre>
    <script type="module">
        import {main} from "/static/js/index.js"
        main();
    </script>

js代码:

let input = document.querySelector("textarea");//获取textarea中的内容
let run = document.querySelector("button");//获取button的内容
let output = document.querySelector("pre");//获取pre中的内容



function main() {
    run.addEventListener("click", function() {  //给run绑定一个函数
        let s = input.value;//获取input的值
        output.innerHTML = s;//将s的内容赋值给output
    })
}

export {
    main,
}

结果:

在这里插入图片描述

下面的pre每次都会获取输入中的内容

输出

调试用console.log,会将信息输出到浏览器控制台

格式化字符串

字符串中填入数值:

let name = "sun", age = 20;
let s = `My name is ${name}. I'm ${age} years old`;//字符串使用 ``
console.log(s);

保留几位小数问题:

let x = 1.234567;
let s = `${x.toFixed(2)}`;//保留两位小数

判断语句

js中的 if…else 与C++完全一致

例如:

let score = 90;
if (score >= 90) {
    console.log("S");
} else if (score >= 80) {
    console.log("A");
} else if (score >= 70) {
    console.log("B");
} else {
    console.log("C");
}

逻辑运算符:与C++一致;&&表示与,|| 表示或,!表示非

循环语句

js中的循环一样,都有 for、while、do…while循环

for循环

    for(let i = 0; i < 10; i++) {
        console.log(i);
    }

枚举对象或数组可以这样使用:

  • for-in循环:可以枚举数组的下标,以及对象中的key
  • for-of循环:可以枚举数组中的值,以及对象中的value
    let array = [1, 3, 5, 7];

    for(let i in array) {
        console.log(i);
    }
    
    console.log("hello world");

    for(let i of array) {
        console.log(i);
    }

在这里插入图片描述

while循环

    let i = 0;
    while(i < 10) {
        console.log(i);
        i++;
    }

do…while循环

    let i = 0;
    do {
        console.log(i);
        i++;
    }while(i < 10);

对象

英文名字是Object,类似于C++中的map,由 key、value 对构成
value 可以是变量、数组、对象、函数等等
函数定义中的this用来引用该函数的拥有者

    let Person = {
        name: "suntong",
        age: 20,
        money: 0,
        add_money: function (x) {
            this.money += x;
        }

    }

对象中的每个key都是字符串类型,例如上面的 name,我们可以写成 “name”,但是不写引号也可以,但是如果我们在外面要使用时,记得带上引号哦;

对象属性与函数的调用方式有两种:

  1. Person.name、Person.add_money()
  2. Person[“name”]、Person [“add_money”] ()

数组

数组类似于C++中的数组,但是数组中的元素类型可以不同;可以是变量、数组、对象、函数等等

例如:

    let a = [1, 2, "sun", 'abc'];
    let b = [
        1,  //变量
        "sun",  //变量
        [1, 2, "sun"],  //数组
        {name: "sun", age: 20}, //对象
        function() {    //函数
            console.log("hello world");
        }
    ]

访问数组中的元素

通过下标来访问数组中的元素;

例如:

console.log(a[0]);

数组常用属性和函数

  • 属性length:返回数组长度;这里的length是属性,而不是函数,不需要加()
  • 函数push():向数组末尾添加元素
  • 函数pop():删除数组末尾的元素
  • 函数splice(a, b):删除从a开始的b个元素
  • 函数sort():将整个数组从小到大排序
  • 自定义比较函数:array.sort(cmp),函数cmp输入两个需要比较的元素,返回一个实数,负数表示第一个参数小于第二个参数,0表示相等,正数表示大于。
    let a = [1, 2, 5, 3, 9];
    a.sort(function(a, b) {
        return b - a;//逆序
    });
    console.log(a);

函数

函数定义方式:有三种

function add(a, b) {
    return a + b;
}

let add = (a, b) => {
    return a + b;
}

let main = function() {
    console.log(typeof add);
    console.log(add(3, 4));
}

函数有返回值,则会返回返回值;若函数没有返回值,则会返回 undefined;

定义

class Point {
    constructor(x, y) {  //构造函数
        this.x = x;
        this.y = y;
    }

    init() {  //成员函数
        this.sum = this.x + this.y;
    }

    toString() {  //成员函数
        return `(${this.x}, ${this.y})`;
    }
}

let p = new Point(3, 4);
console.log(p.toString());

继承

class ColorPoint extends Point {
    constructor(x, y, color) {
        super(x, y);    //super表示继承父类的构造函数
        this.color = color;//this必须要在super之后使用
    }

    toString() {
        return this.color + ' ' + super.toString(); //super调用父类的toString
    }
}

super这个关键字,既可以当作函数使用,也可以当作对象使用。作为函数调用时,代表父类的构造函数,且只能用在子类的构造函数之中。super作为对象时,指向父类的原型对象
在子类的构造函数中,只有调用super之后,才可以使用this关键字
成员重名时,子类的成员会覆盖父类的成员

静态方法

在成员函数前添加static关键字即可;静态成员不可以被对象直接调用,只能通过类来调用

class Point {
    constructor(x, y) {  //构造函数
        this.x = x;
        this.y = y;
    }

    toString() {  //成员函数
        return `(${this.x}, ${this.y})`;
    }

    static class_print_name() {  //静态方法
        console.log("point");
    }
}

let p = new Point(1, 2);
Point.print_class_name();  //正确
p.print_class_name();  // 会报错

静态变量

在ES6中,只能通过class.propname定义和访问;我们不是在类内加上static来定义静态变量,而是直接使用全局变量

Point.cnt = 0;

class Point {
    constructor(x, y) {
        this.x = x;
        this.y = y;

        Point.cnt++;
    }

    toString() {
        return '(' + this.x + ', ' + this.y + ')';
    }
}

let p = new Point(1, 2);
let q = new Point(3, 4);

console.log(Point.cnt);//2

事件

js的代码一般通过事件来触发;可以通过 addEventListener 函数为元素绑定事件的触发函数,常见的有:

鼠标

  • click:鼠标左键点击
  • dblclick:鼠标左键双击
  • contextmenu:鼠标右键点击
  • mousedown:鼠标按下,包括左键、滚轮、右键(event.button:0表示左键,1表示中键,2表示右键)
  • mouseup:鼠标弹起,包括左键、滚轮、右键(event.button:0表示左键,1表示中键,2表示右键)

event.clientX、event.clientY分别获取点击的 x 和 y 的坐标

例如:

let div = document.querySelector("div");

let main = function() {
    div.addEventListener('click', function(event) {
        console.log(event.type);
    })
}

export {
    main,
}

键盘

  • keydown:某个键是否被按住,事件会连续触发(event.code:返回按的是哪个键,event.altKey、event.ctrlKey、event.shiftKey分别表示是否同时按下了alt、ctrl、shift键)
  • keyup:某个按键是否被释放(event属性如上)
  • keypress:紧跟在keydown事件后触发,只有按下字符键时触发。适用于判定用户输入的字符(event属性如上)
  • keydown、keyup、keypress的关系类似于鼠标的mousedown、mouseup、click

表单

  • focus:聚焦某个元素
  • blur:取消聚焦某个元素
  • change:某个元素的内容发生了改变

窗口

需要作用到window元素上

  • resize:当窗口大小放生变化
  • scroll:滚动指定的元素
  • load:当元素被加载完成

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

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

相关文章

网络安全工程师必备证书有哪些?

网络环境之间的竞争&#xff0c;归根到底优秀人才之间的竞争。 在2022年网络安全周上&#xff0c;《网络安全人才实战能力白皮书》正式公布。资料显示&#xff0c;到2027年&#xff0c;我国网络安全人员缺口将达327万&#xff0c;而高校人才培养经营规模仅是3万/年。 那样&am…

上半年亏损之下,卫龙第三次冲刺港股IPO

据港交所文件显示&#xff0c;今年6月27日卫龙美味通过港交所上市聆听&#xff0c;11月24日&#xff0c;卫龙更新了聆听后资料集。若此次上市成功&#xff0c;卫龙将成为港股乃至国内辣条第一股。 此前&#xff0c;卫龙已经两度申请了赴港IPO&#xff0c;但都功败垂成&#xff…

看看咱是如何用MATLAB白嫖遥遥领先于同行的神仙级翻译工具 — DeepL

伙伴们不用惊讶&#xff0c;标题仅仅是借用余大嘴的专用修饰语“遥遥领先于同行”而已&#xff0c;但讲DeepL翻译器遥遥领先于同行也不为过&#xff0c;下图是官方给出的采用盲测的方式与其他同类产品的对比图&#xff0c;这应该不是吹牛X&#xff1a; 如此优秀的翻译神器&…

免改造密码方案入选工信部“首届全国商用密码应用优秀案例”

2022年8月18日&#xff0c;“首届全国商用密码应用优秀案例”评选结果重磅揭晓&#xff0c;炼石网络与陕西移动联合打造的“面向重要数据与个人信息保护的商用密码解决方案”&#xff0c;凭借创新性及技术优势&#xff0c;从102个案例中脱颖而出、成功入选&#xff0c;并被收录…

yolov4训练数据: cuda和cudnn的安装

近期再搞openvinoYolov4目标检测&#xff0c;记录一下cuda和cudnn的安装笔记。 mirrors / alexeyab / darknet GitCode 1.cuda的安装 cuDNN Archive | NVIDIA Developer wget https://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda_10.2.89_…

【SVM时序预测】基于matlab鲸鱼算法优化支持向量机SVM时序数据预测【含Matlab源码 2250期】

⛄一、鲸鱼算法优化支持向量机SVM 1 鲸鱼优化算法 WOA是由Mirjalili和Lewis在2016年提出的一种较为新颖的元启发式群体智能优化算法&#xff0c;该算法模仿座头鲸的“螺旋气泡网”捕食策略&#xff0c;如图1所示。 图1 座头鲸“螺旋起泡网”捕食策略 WOA算法寻优步骤如下。 步…

详解企业财务数字化转型路径|推荐收藏

许多企业在推动各大业务部门进行数字化转型时&#xff0c;往往会忽略财务部门。然而&#xff0c;作为掌握公司核心资源与数据和推动企业信息化建设的部门&#xff0c;财务部门也应成为企业数字化转型的重要突破口。 财务数字化转型是运用信息技术等手段对财务数据进行统计、记录…

【Android App】三维投影OpenGL ES的讲解及着色器实现(附源码和演示 超详细)

需要源码请点赞关注收藏后评论区留言私信~~~ 一、OpenGL ES简介 虽然OpenGL的三维制图功能非常强大&#xff0c;但是它主要为计算机设计的&#xff0c;对于嵌入式设备和移动端设备来说显得比较臃肿&#xff0c;所以业界又设计了专供嵌入式设备的OpenGL ES 它相当于OpenGL的精简…

GPS定位原理

GPS卫星&#xff1a; 卫星定位系统是一种使用卫星对某物进行准确定位的技术&#xff0c;它从最初的定位精度低、不能实时定位、难以提供及时的导航服务&#xff0c;发展到现如今的高精度GPS全球定位系统&#xff0c;实现了在任意时刻、地球上任意一点都可以同时观测到4颗卫星&a…

OS_虚拟内存@请求分页系统@驻留集@内存分配策略

文章目录OS_虚拟内存请求分页系统驻留集内存分配策略请求分页系统页表机制缺页中断机构地址变换机构页框分配驻留集分配策略固定分配可变分配置换策略局部置换全局置换策略组合固定分配局部置换可变分配全局置换可变分配局部置换&#x1f388;OS_虚拟内存请求分页系统驻留集内存…

docker中安装并启动rabbitMQ

docker中安装并启动rabbitMQ1、安装rabbitMQ1.1、拉取镜像1.2、启动容器实例1.3、开启web界面管理插件1.4、浏览器访问 rabbitMQ2、解决Docker部署rabbitmq遇到的如下两个问题&#xff1a;2.1、访问交换机时报错&#xff0c;Management API returned status code 5002.2、访问c…

003. 电话号码的字母组合——回溯算法

1.题目链接&#xff1a; 17. 电话号码的字母组合 2.解题思路&#xff1a; 2.1.题目要求&#xff1a; 给定一个仅包含数字 2-9 的字符串 digits &#xff0c;返回所有它能表示的字母组合。 数字和字母的关系&#xff1a; 例子&#xff1a; 输入&#xff1a;"23" …

测试用例中遇到的常见问题

1、测试用例是什么? 测试用例的设计就是如何覆盖所有软件表现出来的状态&#xff0c;即在满足输入/输出的一组条件下&#xff0c;软件运行时一系列有次序的、受控制的状态变化过程 2、设计用例是否有必要? 将测试内容记录下来&#xff0c;避免了在执行的时候部分测试点被遗…

链式二叉树

链式二叉树一&#xff0c;相关函数接口实现1&#xff0c;前序遍历2&#xff0c;中序遍历3&#xff0c;后序遍历4&#xff0c;节点个数5&#xff0c;叶子结点个数6&#xff0c;树的高度7&#xff0c;第K层结点个数8&#xff0c;查找值为X的结点9&#xff0c;通过前序遍历数组构建…

m基于NSGAII优化算法的微网系统的多目标优化规划matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 NSGA-II是基于的非支配排序的方法,在NSGA上进行改进&#xff0c;也是多目标进化优化领域一个里程碑式的一个算法。 NSGA-Ⅱ算法是 Srinivas 和 Deb 于 2000 年在 NSGA 的基础上提出的&#xff0c…

社区系统项目复盘-3

文章目录过滤敏感词发布帖子帖子详情添加评论私信列表发送私信统一处理异常统一记录日志基于Springboot的核心功能实现 包括自定义前缀树过滤敏感词&#xff1b;使用异步请求的方式发布帖子&#xff1b;查看帖子详情&#xff1b;添加评论时需要同时增加评论的数据和修改帖子的评…

电源设备设计

目录 一、通信电源概述 &#xff08;1&#xff09; &#xff08;2&#xff09;通信电源系统组成 &#xff08;3&#xff09;通信电源供电方式 集中供电示意图 分散供电示意图 USP供电示意图 二、交流供电系统设计 1、交流供电--市电引入 交流低压供电示意图 2、交流供电--UPS &…

Innodb是如何运转的

Innodb是如何运转的Innodb体系架构后台线程Master ThreadIO ThreadPurge ThreadPage Cleaner Thread内存缓存池LRU ListFree Listunzip_LRUflush list重做日志缓冲(redo log buffer)额外的内存池checkpoint技术Sharp CheckpointFuzzy CheckpointMaster Thread的工作方式Innodb …

SparkMlib 之逻辑回归及其案例

文章目录什么是逻辑回归&#xff1f;逻辑回归的优缺点逻辑回归示例——预测回头客逻辑回归示例——预测西瓜好坏逻辑回归示例——预测垃圾邮件什么是逻辑回归&#xff1f; 逻辑回归是一种流行的预测分类响应的方法。它是预测结果概率的广义线性模型的特例。在逻辑回归中&#…

EasyRecovery2022中文版电脑端数据恢复软件

EasyRecovery2023数据恢复软件是一款文件恢复软件&#xff0c;能够恢复内容类型非常多&#xff0c;包括办公文档、文件夹、电子邮件、照片、音频等一些常用文件类型都是可以进行恢复&#xff0c;操作非常简单&#xff0c;只需要将存储设备连接到电脑上&#xff0c;运行EasyReco…