一文带你走进JS语法(最全笔记)

news2024/7/6 19:07:28

 

目录

基本语法

1.引入方式

2.注释

3.输入输出语句

4.变量和常量

5.原始数据类型

6.运算符

7.流程控制语句

8.数组

9.函数

DOM

1.概述

2.元素对象的操作

3.元素内属性操作

4.元素内文本操作

事件

面向对象

1.定义类的方式

2.继承

内置对象

1.Number对象

2.Math对象

3.Data对象

4.String对象

5.RegExp对象

6.Array对象

7.Set对象

8.Map对象

9.JSON对象

BOM

基本语法

1.引入方式

  • 第一种

    <script>
        js代码
    </script>
  • 第二种

    <script src="js文件"></script>

2.注释

  • 单行注释

    <script>
        //这是单行注释
    </script>
  • 多行注释

    <script>
        /*
            这是多行注释
        */
    </script>

3.输入输出语句

  • prompt(),范例

    prompt("请输入:");
    //该语句在页面弹出一个输入框,并且带有提示
  • alert(),范例

    alert("提示");
  • console.log(),范例

    console.log("控制台输出的内容");
  • document.write(),范例

    document.write("向页面输出内容");

4.变量和常量

  • JavaScript是弱类型语言,定义变量时不用区分具体数据类型

  • 定义局部变量

    语法:let 变量名 = 值;

    范例:

    let name = "张三";
    let age = 23;
  • 定义全局变量

    语法:变量名 = 值;

    范例:

    school = "清华大学";
  • 定义常量

    语法:const 常量名 = 值;

    范例:

    const PI = 3.1415926;

5.原始数据类型

类型说明
boolean布尔类型,true或false
undefined未定义,即定义变量时没有赋值
null声明null为变量值
number整数或浮点数
string字符串
bigint大整数,例如bigint num = 10n;需要在数字后加上n

判断原始数据类型的方法:

使用typeof()函数

范例:

let l1 = true;
document.write(typeof(l1)+"<br/>"); //输出boolean
​
let l2;
document.write(typeof(l2)+"<br/>"); //输出undefined
​
let l3 = null;
document.write(typeof(l3)+"<br/>"); //输出Object,null被认为是对象占位符
​
let l4 = 123;
document.write(typeof(l4)+"<br/>"); //输出number
​
let l5 = "abc";
document.write(typeof(l5)+"<br/>"); //输出string
​
let l6 = 10n;
document.write(typeof(l6)+"<br/>"); //输出bigint

6.运算符

  • JavaScript中运算符和Java的大致相同

  • 不同点:

    1. ==号比较的是变量的值是否相同,如字符串的"10"跟数字的10比较返回true

    2. === 号比较类型和值,则字符串的"10"跟数字的10比较返回false

    3. 字符串类型的数字计算时会发生类型转换

7.流程控制语句

  • 与Java的相同,但是注意在流程控制语句中的变量定义语法不同

8.数组

  • JavaScript数组长度和类型没有限制

    定义一个数组的语法是:let 数组名 = [元素];

    范例:

    let arr = [1,2,3];
  • 获取数组长度

    使用函数:数组名.length

    范例:

    arr.length;
  • 数组复制

    语法:数组1 = [...数组2];

    范例:

    let a = [1,2,3];
    let b = [...a];//数组b内容也是1,2,3
  • 数组合并

    语法:数组1 = [...数组2,数组3];将数组2和3合并到1

    范例:

    let a = [1,2,3];
    let b = [4,5,6];
    let c = [...a,...b];//数组c内容是1,2,3,4,5,6
  • 字符串转数组

    语法:数组 = [...字符串];

    范例:

    let s = "lxq";
    let a = [...s];a数组内容是l,x,q

9.函数

  • JavaScript中的函数类似于Java中的方法

  • 普通函数

    语法:

    function 方法名(参数){
        方法体;
        return 返回值;
    }

    注意:如果不需要返回值则不用写return语句,参数不用写类型

  • 可变参数

    语法:

    function 方法名(...参数){
        方法体;
        return 返回值;
    }
  • 匿名函数

    语法:

    function(参数){
        方法体;
        return 返回值;
    }

DOM

1.概述

  • DOM指document object model,即文档对象模型

  • 将HTML文档各个组成部分封装为对象,借助这些对象可以对HTML文档进行增删改查的动态操作

  • 相关对象:

    1. Document,表示文档对象

    2. Element,元素对象

    3. Attribute,属性对象

    4. Text,文本对象

2.元素对象的操作

  • 根据document文档对象来获取元素对象

    方法说明
    getElementById(id属性值)根据id属性获取元素对象
    getElementsByTagName(标签名)根据标签名获取元素对象
    getElementsByName(name属性值)根据name属性获取元素对象
    getElementsByClassName(class属性值)根据class属性获取元素对象
  • 根据当前元素对象获取父元素对象

    子元素对象.parentElement

  • 通过文档对象创建新元素对象

    document.createElement(标签名);

  • 将指定子元素对象添加到父元素中

    父元素对象.appendChild(子元素对象);

  • 父元素删除指定的子元素

    父元素对象.removeChild(子元素对象);

  • 父元素用新子元素替换旧子元素

    父元素对象.replace(新元素,旧元素);

3.元素内属性操作

  • 给元素设置属性

    setAttribute(属性名,属性值);

  • 根据属性名获取属性值

    getAttribute(属性名);

  • 根据属性名移除属性

    removeAttribute(属性名);

  • 为元素添加样式

    方式一:

    元素对象.style.样式=值;

    如:

    let ele = document.getElementById("a");
    ele.style.color = "red";

    方式二:

    元素对象.className = "类选择器名";

4.元素内文本操作

  • 设置文本内容,不解析标签

    元素对象.innerText="文本内容";

    注意:不解析标签是指文本内容如果有HTML标签也不会解析,只会当成文本

  • 设置文本内容,解析标签

    元素对象.innerHTML="文本内容";

    注意:这里的文本内容会被解析标签

事件

  • 事件是某些组件完成某些操作时会触发的代码

  • 常用事件

    事件说明
    onload某个页面或图像被加载完成
    onsubmit表单提交时
    onclick鼠标点击事件
    ondblclick鼠标双击
    onblur元素失去焦点
    onfocus元素获得焦点
    onchange用于改变域的内容
  • 绑定事件的方式

    1. 通过标签中事件属性进行绑定

      范例:

      <button οnclick="触发的操作"></button>
    2. 通过DOM元素进行绑定

      let b = document.getElementById("btn");
      b.οnclick=function(){//使用匿名方法
          触发的操作;
      }

面向对象

1.定义类的方式

  • 方式1

    语法:

    class 类名{
        //构造方法
        constructor(变量列表){
            变量赋值;
        }
        //普通方法
        方法名(参数列表){
            方法体;
            return 返回值;
        }
    }

    用法:

    let 对象名 = new 类名(实际变量值);
    对象名.变量名;
    对象名.方法名();
  • 方式2

    语法:

    //在定义类的时候已经创建了对象
    let 对象名 = {
        变量名 : 变量值,
        变量名 : 变量值,
        
        方法名 : function(参数列表){
            方法体;
            return 返回值;
        },
        方法名 : function(参数列表){
            方法体;
            return 返回值;
        }
    };

    用法:

    对象名.变量名;
    对象名.方法名();

2.继承

  • JS中顶级父类是Object

  • 继承需要使用extends关键字

    语法:

    class 子类 extend 父类{}
  • 继承范例

    class Person{
        constructor(name,age){
            this.name = name;
            this.age = age;
        }
    ​
        show(){
            document.write(this.name+","+this.age+"<br/>");
        }
    }
    ​
    class Worker extends Person{
       constructor(name,age,salary){
           //使用super()调用父类构造方法
            super(name,age);
            this.salary = salary;
       }
    ​
       show(){
            document.write(this.name+","+this.age+","+this.salary);
       }
    }
    ​
    let worker = new Worker("张三",23,15000);
    worker.show();

内置对象

1.Number对象

  • parseFloat(s)方法,将字符串浮点数转为浮点数

  • parseInt(s)方法,将字符串整数转为整数

2.Math对象

  • ceil(x)方法,向上取整

  • floor(x)方法,向下取整

  • round(x)方法,四舍五入

  • random()方法,返回0到1之间的随机数,不含1

  • pow(x,y)方法,x的y次方

3.Data对象

  • 构造方法

    方法说明
    Date()根据当前事件创建对象
    Date(value)指定毫秒值创建对象
    Date(year,month[,day,hour,min,sec,mill])指定字段创建对象,月份是0到11

  • 常用方法

    方法说明
    getFullYear()获取年份
    getMonth()获取月份
    getDate()获取天数
    getHours()获取小时
    getMinutes()获取分钟
    getSeconds()获取秒
    getTime()返回时间原点至今毫秒数
    toLocalString()返回本地日期格式的字符串

4.String对象

  • 构造方法

    方法说明
    String(value)根据指定字符串创建对象
    let s = "字符串"直接赋值
  • 常用方法

    方法说明
    length属性获取字符串长度
    charAt(index)获取指定索引处字符
    indexOf(value)获取指定字符串出现的索引位置,不存在返回-1
    substring(start,end)根据给出范围截取字符串,含头不含尾
    split(value)根据指定规则切割字符串,返回数组
    replace(old,new)使用新字符替换旧字符

5.RegExp对象

  • 构造方法

    方法说明
    RegExp(规则)根据制定规则创建对象
    let reg = /^规则$/直接赋值
  • 匹配方法:test(字符串)方法,用于查看字符串是否符合匹配规则

6.Array对象

  • 常用方法

    方法说明
    push(元素)添加元素到数组末尾
    pop()删除数组末尾元素
    shift()删除数组最前面元素
    includes(元素)判断数组是否包含指定的元素
    reverse()反转数组中的元素
    sort()对数组元素排序

7.Set对象

  • 元素唯一,存取顺序一致

  • 构造方法:Set()

  • 常用方法

    方法说明
    add(元素)添加元素
    size属性获取集合长度
    keys()获取迭代器对象
    delete(元素)删除指定元素
  • Set集合遍历范例

    let set = new Set();
    set.add("a");
    set.add("b");
    let st = set.keys();
    for(let i = 0;i < set.size;i++){
        document.write(st.next().value);
    }

8.Map对象

  • key唯一,存取顺序一致

  • 构造方法:Map()

  • 常用方法

    方法说明
    set(key,value)向集合添加元素
    size属性获取集合长度
    get(key)根据key获取value
    entries()获取迭代器对象
    delete(key)根据key删除键值对
  • Map集合遍历范例

    let map = new Map();
    map.set(1,"a");
    map.set(2,"b");
    let et = map.entries();
    for(let i = 0;i < map.size;i++){
        document.write(et.next().value);
    }

9.JSON对象

  • JSON(JavaScript Object Notation)是一种轻量级的数据交换格式

  • 它是基于ECMAScript规范的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据

  • 简洁和清晰的层次结构使得JSON成为理想的数据交换语言,易于人阅读和编写,同时也易于计算机解析和生成,并有效提升网络传输效率

  • 常用方法

    方法说明
    stringfy(对象)将指定对象转换为json格式字符串
    parse(字符串)将指定json格式字符串解析成对象
  • 范例

    let weather = {
        city : "北京";
        date : "2022-08-08";
        temperature : "10~20";
    };
    let str = JSON.stringfy(weather);
    let weather2 = JSON.parse(str);

BOM

  • BOM(Browser Object Model),是指浏览器对象模型

  • 将浏览器各个组成部分封装成不同的对象,方便进行操作

  • 具体有如下的对象

    1. Navigator,表示浏览器对象

    2. Window,窗口对象

    3. Location,地址栏对象

    4. History,窗口历史对象

    5. Screen,显示屏幕对象

  • Window窗口对象常用功能

    • 定时器

      1. 唯一标识 setTimeout(功能,毫秒值);方法,用于设置一次性定时器,返回一个唯一标识

      2. clearTimeout(标识);方法,根据标识取消一次性定时器

      3. 唯一标识 setInterval(功能,毫秒值);方法,设置循环定时器,返回一个唯一标识

      4. clearInterval(标识);方法,根据标识取消循环定时器

    • 加载事件:window.onload=触发的事件,用于页面加载完毕时触发的事件

  • Location地址栏对象常用功能

    • 设置href属性,通过设置这个属性实现浏览器读取并显示新的URL的内容

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

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

相关文章

matlab贝叶斯隐马尔可夫hmm模型实现

贝叶斯隐马尔可夫模型是一种用于分割连续多变量数据的概率模型。该模型将数据解释为一系列隐藏状态生成。每个状态都是重尾分布的有限混合&#xff0c;具有特定于状态的混合比例和共享的位置/分散参数。 相关视频&#xff1a;马尔可夫链原理可视化解释与R语言区制转换Markov r…

java面试总结

文章目录JVM类的加载过程类加载器有哪些什么是双亲委派双亲委派的好处如何打破双亲委派java内存模型栈帧的结构java堆的分代设计对象内存分配对应的GC为什么需要Survivor区?只有Eden不行吗&#xff1f;为什么要有两个Survivor区对象创建过程对象内存布局对象头Mark Word对象大…

提高 K8S 容器运行时的可观察性最佳方法之一

当谈到云原生可观察性时&#xff0c;可能每个人都会提到OpenTelemetry (OTEL)&#xff0c;因为社区需要依赖标准来将所有集群组件开发指向到同一方向。OpenTelemetry 使我们能够将日志、指标&#xff08;metrics&#xff09;、跟踪&#xff08;traces&#xff09;和其他上下文信…

内容爆炸时代,如何打造品牌经营的“弹药库”?

&#x1f446;点击一键预约本周三主题直播&#x1f446;2017年&#xff0c;华为总裁办发布《华为之熵&#xff0c;光明之矢》的内部学习邮件&#xff0c;将热力学中“熵”的概念应用到企业管理中&#xff0c;成为被人们津津乐道的“熵减哲学”。对于“熵”的概念&#xff0c;大…

[附源码]计算机毕业设计基于vuejs的文创产品销售平台app

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

[附源码]计算机毕业设计甜品购物网站Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【OpenCV-Python】教程:4-2 Harris角点检测

OpenCV Python Harris 角点检测 【目标】 理解Harris角点检测背后的概念&#xff1b;cv2.cornerHarris(), cv2.cornerSubPix() 【理论】 上一章节中&#xff0c;我们看到在图像中每个方向变化都很大的区域就是角点&#xff0c;一个早期的尝试是由 Chris Harris & Mike …

关闭图片窗口

关闭图片窗口 结果演示 概述 通过事件的绑定来实现&#xff0c;关闭网页中某个图片窗口的效果。 构建HTML框架 <body><div class"box">图片<img src"https://upload-bbs.mihoyo.com/upload/2021/03/11/73281682/f810fbc2e4806aab8176e96feee…

关于数据分析知识的干货分享

数据分析的出现是因为人类难以理解海量数据所呈现出来的信息&#xff0c;不能从中找到相应的规律来对现实中的事物进行对应&#xff0c;我们都知道数据有很高的价值&#xff0c;但不能利用的价值&#xff0c;没有任何意义。 为了解决这一问题&#xff0c;数据分析在长期的数据…

超透镜与超表面全息

超透镜和超表面因其操纵电磁场的独特特性而在科学上声名鹊起&#xff0c;如今它们的制造已经变得可行。但它们的设计难度远远超过了传统镜片&#xff0c;因为必须考虑到纳米级构件的特性。 VirtualLab Fusion的优势  统一的平台&#xff1a;具有将纳米级构建模块和大尺…

JAVA-GUI工具的编写-----事件篇

上一节介绍了HTTP以及HTTPS请求&#xff0c;那么这里我们就接着讲解事件与请求联动。 关于POC以及EXP最大的区别就是&#xff0c;EXP是附带利用功能&#xff0c;而POC仅仅是检测功能&#xff0c;所以这里我们需要动起来&#xff0c;GUI小工具能用上的事件功能其实就两个&#…

【vue3】代码自动格式化和volar卡顿问题解决

一、格式化策略 用eslint做代码检查和格式化是很方便的东西&#xff1b; 这里我们使用vscode完成这些操作&#xff1b; 在代码保存的时候&#xff0c;顺便完成格式化操作 1)装上eslint和prettier插件 2)装完插件之后&#xff0c;我们需要配置一下 打开 文件 > 首选项 >…

为什么阿里巴巴建议HashMap初始化时需要指定容量大小?

为什么阿里巴巴建议HashMap初始化时需要指定容量大小&#xff1f; 为什么&#xff1f; 关于集合类&#xff0c;《阿里巴巴Java开发手册》中写道&#xff1a; 我们先来写一段代码在JDK 1.7 &#xff08;jdk1.7.0_80&#xff09;下面来分别测试下&#xff0c;在不指定初始化容量…

Docker harbor私有仓库部署与管理

Docker harbor私有仓库部署与管理Docker harbor私有仓库部署与管理一、Docker 私有仓库1、下载registry镜像2、修改配置文件/etc/docker/daemon.json &#xff0c;添加私有仓库配置&#xff0c;修改完后重启docker3、创建私有仓库容器4、推送镜像到私有仓库中5、查看当前仓库的…

使用 Lua 脚本和海康 VisionMaster 进行 TCP 通信

说明&#xff1a;因任务需求&#xff0c;需要进行海康VisionMaster服务端和Lua脚本客户端进行TCP通信传输数据。因为之前从未接触过Lua语言&#xff0c;所以也趁机学习一波。 内容Lua教程手册LuaSocket使用方法一方法二报错&#xff1a;“attempt to compare number with strin…

高级_09.性能分析工具的使用

第09章_性能分析工具的使用 1. 数据库服务器的优化步骤 当我们遇到数据库调优问题的时候&#xff0c;该如何思考呢&#xff1f;这里把思考的流程整理成下面这张图。 整个流程划分成了观察&#xff08;Show status&#xff09;和行动&#xff08;Action&#xff09;两个部分。…

Service详解「2」

Service详解「2」 文章目录Service详解「2」Service介绍kube-proxy目前支持三种工作模式:userspace 模式iptables 模式ipvs 模式Service类型Service使用实验环境准备ClusterIP类型的ServiceEndpoint负载分发策略HeadLiness类型的ServiceNodePort类型的ServiceLoadBalancer类型的…

407. 接雨水 II

给你一个 m x n 的矩阵&#xff0c;其中的值均为非负整数&#xff0c;代表二维高度图每个单元的高度&#xff0c;请计算图中形状最多能接多少体积的雨水。 示例 1: 输入: heightMap [[1,4,3,1,3,2],[3,2,1,3,2,4],[2,3,3,2,3,1]] 输出: 4 解释: 下雨后&#xff0c;雨水将会被上…

24节气- ||大雪|| 文案、海报分享,冬寒雪落,归家愈暖。

大雪降至 一年中最寒冷的时候也将到来 大家注意保暖防护 过个温暖的冬天吧&#xff01; 下面是我整理的关于大雪的文案、海报&#xff0c;希望对大家有帮助&#xff01; 更多设计素材免费下载&#xff1a; https://www.sucai999.com/?vNTYxMjky 01 大雪至&#xff0c;人…

跨越专业翻译的语言之墙:百度翻译的技术攀登

作为一个科技从业者&#xff0c;阅读AI顶会的最新论文、浏览国内外创新的最新动向&#xff0c;是我工作的重要部分。平时接触的开发者、科学家、企业研究人员等&#xff0c;工作生活中也涉及大量专业阅读。于是乎&#xff0c;我就会经常听到这样的抱怨&#xff1a;PDF格式的论文…