JavaScript(JS)学习笔记 1(简单介绍 注释和输入输出语句 变量 数据类型 运算符 流程控制 数组)

文章目录

    • JavaScript简单介绍
    • JavaScript中的注释和输入输出语句
    • JavaScript中的变量
    • JavaScript中的数据类型
    • JavaScript中的运算符
    • JavaScript中的流程控制
    • JavaScript中的数组

JavaScript简单介绍

JavaScript发展历史

  • 由布兰登·艾奇在1995年用时10天发明。由于他最早在网景公司工作,因此网景公司最初将其命名为LiveScript,后来在与Sun公司合作之后将其改名为JavaScript,简称为JS
  • JavaScript本身和Java语言并没有任何关系。

JavaScript是什么

  • JavaScript是世界上最流行的语言之一,是一种运行在客户端的脚本语言。
  • 之所以说该语言是脚本语言,是因为该语言不需要进行编译,在运行过程中由JS解释器(也被称为JavaScript引擎)逐行来进行解释然后执行。
  • 现在也可以基于Node.js技术来进行服务器端的编程。

JavaScript有什么用:表单动态检验、网页特效制作、服务端开发(基于Node.js)、桌面程序开发、APP开发、物联网中的控制硬件开发(基于Ruff)、游戏开发(基于cocos2d-js)等各种任务。

浏览器如何执行JS代码:浏览器可以分为两部分,分别是渲染引擎和JS引擎,其中JS引擎就用来执行JS代码。

  • 渲染引擎:用来解析HTML和CSS代码,也被称为浏览器内核,例如BlinkWebkit等等。
  • JS引擎:也就是JS解释器,用来读取网页中的JS代码,对其处理后运行,例如V8等。V8号称是最快的JS引擎。

JS的组成:JS可以分为ECMAScriptDOMBOM三部分。

  • ECMAScript
    • 由原欧洲计算机制造协会(ECMA)进行标准化的一门编程语言,这种语言在万维网上应用广泛,往往被称为JavaScriptJscript(微软公司模仿JS发明的语言),但是实际后面两种语言都是ECMAScript的实现和扩展。
    • ECMA规定了JS的编程语法和基础核心知识,是所有浏览器厂商共同遵守的一套JS语法工业标准。
  • DOM:全称为文档对象模型,是W3C组织推荐的处理可扩展标记语言的标准编程接口,通过DOM提供的接口可以对网页中的各种元素进行操作(例如设置大小、颜色和位置等)。在后续API的学习笔记中会涉及,此处暂时不进行详细解释。
  • BOM:全称为浏览器对象模型,提供了独立于内容的、可以与浏览器窗口进行互动的对象结构。通过BOM可以操作浏览器窗口,例如弹出对话框、控制浏览器跳转、获取分辨率等。

JS的书写位置:JS的书写位置可以分为行内式、内嵌式和外部式。

  • 行内式
    • 行内式的语法:直接写到元素的内部,例如<input type="button" value="test" onclick="alert('hello world')">
    • 行内式的特点:适合于单行或少量JS代码,但是可读性较差,引号使用容易出错(尤其是引号多层嵌套时),仅仅在特殊情况下使用。
    • 行内式的注意事项:在HTML代码中推荐使用双引号,在JS中推荐使用单引号。
  • 内嵌式
    • 内嵌式的语法:在网页的HTML源代码的<head>标签中,增加一对<script></script>标签(一般是放在内嵌式CSS样式标签<style></style>的下面),在这一对标签中写入JS代码。
    • 内嵌式的特点:是学习JS时常用的一种方式。
  • 外部式
    • 外部式的语法:新建一个后缀名为.js的文件,并直接在其中写入JS代码。接着,在HTML源代码中引入该文件,引入语法为:<script src="JS文件路径"></script>
    • 外部式的特点:利于HTML页面代码结构化,可以将网页的结构和样式与行为分离开,并且有利于文件级的代码复用,适用于JS代码量很大的情况。

JavaScript中的注释和输入输出语句

JS中的注释:注释可以分为单行注释和多行注释两种。

  • 单行注释:在一行代码的前面加上 // 即可。在VsCode中可以使用Ctrl + / 进行单行注释。
  • 多行注释:在注释的开头使用 /*,在注释的结尾加上 */。在VsCode中可以使用Shift + Alt + A进行多行注释。

JS中的输入输出语句

  • 输入函数prompt:语法为prompt("提示字符串"),该函数可以在浏览器中弹出一个输入框,获取用户的输入,获取的输入类型是一个字符串。
  • 输出函数alert:语法为alert("输出的字符串"),该函数可以在浏览器中以弹出警示框的形式给用户一个输出反馈。
  • 控制台输出函数console.log:语法为console.log("输出的字符串"),该函数可以在控制台中进行输出,用于程序调试等过程。在浏览器中可以通过按下F12键打开控制台,查看输出结果。

JavaScript中的变量

变量的使用方式:JS中变量的使用也需要先进行声明,然后才能赋值。

  • 变量的声明var 变量名;。var是JS中的一个专门用来声明变量的关键字。变量的声明过程中也可以对变量进行初始化。另外,还可以一次性声明多个变量,多个变量之间使用英文逗号分隔。
  • 变量的赋值变量名 = 变量值。对于没有进行过赋值的变量,其默认值是undefined
  • 允许不声明直接使用变量:JS中其实也允许不声明只赋值后直接使用变量,但是这种方式不推荐。
  • 变量名命名规则:由大小写字母、数字、下划线和美元符号组成。变量名区分大小写,不能以数字开头,不能是关键字。

JavaScript中的数据类型

JavaScript是一种弱类型语言(也被称为动态语言),意味着声明变量时无需指定类型,类型会在程序的运行过程中被自动确定。

  • JS数据类型分类:可以分为简单数据类型和复杂数据类型两类。简单数据类型包括NumberStringBooleanUndefinedNull等,复杂数据类型主要是对象。
    • Number:数字型,包含整型值和浮点型值,默认值是0
      • 不同的进制:可以加前缀0表示八进制整数,加前缀0x表示十六进制整数。
      • 最大值和最小值Number.MAXNumber.MIN分别表示该类型的最大表示数字和最小表示数字。
      • 无穷大和无穷小:常量Infinity-Infinity表示无穷大和无穷小。
      • 非数值:常量NaN用于表示非数值。
    • String:字符串型,需要使用一对引号进行表示,默认值是空字符串。
      • 引号的选择:在JS中为了与HTML和CSS代码进行区分,推荐使用单引号来表示字符串。
      • 引号的嵌套:如果一个字符串中本身还有引号,则要和表示字符串的引号不同,即表示字符串的引号是单引号时,字符串内部的引号应该采用双引号。
      • 转义字符:JS中常用的转义符如下:\n表示换行、\b表示单个空格、\\表示单斜杠、\t表示缩进。重点记忆换行和缩进即可。
      • 字符串的长度获取:可以通过字符串的length属性获取字符串的长度。
      • 字符串的拼接:可以通过 + 运算符来拼接两个字符串。如果和字符串拼接的数据的类型不是字符串,则会自动将其转换为字符串。
    • Boolean:布尔值类型,truefalse分别等价于10,默认值是false
    • Undefined:表示声明了一个变量但是没有对该变量进行赋值。进行字符串相加时也会变成字符串"undefined",和数值运算结果是NaN
    • Null:表示空变量。可以使用isNaN(变量名)的方式来检测一个变量是否是空的,返回值是一个布尔值。
  • 获取JS变量的数据类型:使用typeof 变量名的方式可以获取一个变量的数据类型,其中typeof是JS中的一个关键字。
  • JS中的数据类型转换
    • 将数据转换为字符串
      • 使用该变量的toString方法变量名.toString()
      • 使用String函数进行强制转换String(变量名)
      • 与一个空字符串拼接"" + 变量名。这是一种最常用的方法,是一种隐式转换的方法。
    • 将数据转换为数字:前两种方法是重点。
      • 使用parseInt(string)函数:该函数可以将一个字符串转换为整型数字。这个函数会从字符串的首字符开始解析,直到找到第一个不是数字的字符为止。
      • 使用parseFloat(string)函数:该函数可以将一个字符串转换为浮点型数字。该函数也会从字符串的首字符开始解析,直到找到第一个不是浮点数组成的字符为止。
      • 使用Number()函数强制转换:将一个数据强制转换为数字类型。
      • 使用算术运算符进行隐式转换:例如,可以通过一个字符串 + 0 或 - 0 来将该字符串隐式转换为数值类型。
    • 将数据转换为布尔值Boolean()函数可以将其他的数据类型转换为布尔值。代表空、否定的值,例如空字符串、0NaNNULLundefined转换为false,其他的值都会被转换为true

JavaScript中的运算符

JS中的运算符使用和其他语言中的运算符使用大同小异,下面只介绍一些简单的注意事项:

  • 浮点数运算精度问题:浮点数的最高精度是17位小数,但是其计算的精确度远不如整数,因此浮点数之间无法进行直接的相等判定。
  • 全等的判定:JS中有===!==符号进行全等判定,全等是指两个变量的数据类型和值都完全相同。

JavaScript中的流程控制

  • if-else if-else语句:与C++中的if系列语句的语法完全相同。
  • 三元表达式:JS中也支持与其他语言中相同的三元表达式?:
  • switch语句:与C++中的switch语句的使用语法完全相同,但是进行case匹配时不是进行相等判定,而是进行全等判定。
  • for循环语句:和C++中的for循环语句的语法完全相同。
  • while循环语句:和C++中的while循环语句的语法完全相同。
  • do-while循环语句:和C++中的do-while循环的语法完全相同。
  • break和continue关键字:和其他编程语言中的这两个关键字的作用完全相同。

JavaScript中的数组

数组的创建

  • 使用new关键字创建var 数组名 = new Array();
  • 使用数组字面量创建数组var 数组名 = [元素1, 元素2, ....];

数组中元素的数据类型:数组中的元素可以是不同的数据类型。

数组的长度获取:数组的length属性即表示数组中的元素个数。

向数组中添加元素

  • 修改数组的length属性来进行扩容(是的,JS中数组的长度属性是可以读写的),多出来的空位置将会被自动赋值undefined
  • 直接通过索引号来增加数组元素。例如对于一个原本长度为3的数组arr,可以写入arr[3]="test",来向数组中添加一个新元素。

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

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

相关文章

python基础(1)pyenv安装和对Django使用

pyenv安装 pyenv主要针对类 Unix 系统&#xff08;如 Linux、macOS&#xff09;用户&#xff0c;pyenv-win 是专为 Windows 开发的 pyenv 版本&#xff0c;允许您在不使用 WSL 的情况下管理多个 Python 版本和虚拟环境。 建议Git Bash&#xff1a; Powershell或Git Bash&…

功能测试干了三年,快要废了。。。

8年前刚进入到IT行业&#xff0c;到现在学习软件测试的人越来越多&#xff0c;所以在这我想结合自己的一些看法给大家提一些建议。 最近聊到软件测试的行业内卷&#xff0c;越来越多的转行和大学生进入测试行业&#xff0c;导致软件测试已经饱和了&#xff0c;想要获得更好的待…

Java键盘输入语句

编程输入语句 1.介绍:在编程中&#xff0c;需要接受用户输入的数据&#xff0c;就可以使用键盘输入语句来获取。 2.步骤&#xff1a; 1&#xff09;导入该类的所在包&#xff0c;java.util.* 2)创建该类对象&#xff08;声明变量&#xff09; 3&#xff09;调用里面的功能 3…

任务书与开题报告的区别与联系:如何让二者相辅相成

AIPaperGPT&#xff0c;论文写作神器~ https://www.aipapergpt.com/ 大家好&#xff01;今天咱们聊聊论文写作过程中两个让人又爱又恨的关键步骤&#xff1a;任务书和开题报告。 这两兄弟可是你毕业路上的第一关卡&#xff0c;搞不定它们&#xff0c;你后面别说论文了&#…

时序必读论文12|ICML22 FEDformer基于周期分解的长时序预测transformer架构

论文标题&#xff1a;FEDformer: Frequency Enhanced Decomposed Transformer for Long-term Series Forecasting 开源代码&#xff1a;https://github.com/DAMO-DI-ML/ICML2022-FEDformer 前言 FEDformer这篇文章发表于2022年的ICML。其实如果只比较性能的话&#xff0c;到…

微信如何发布学生查分?教师平台推荐!

学校和老师们都在面临着一个共同的问题&#xff1a;如何高效、便捷地发布学生成绩查询信息&#xff1f;在这个数字化时代&#xff0c;传统的纸质通知和口头传达方式已经无法满足家长和学生的需求。幸运的是&#xff0c;有了易查分这样的在线工具&#xff0c;发布学生查分变得简…

vitis Failed to create the part‘s controls解决方法

类似于 解决方法&#xff1a;重启vitis。 效果&#xff1a; 可以建立lab4了。

wallpaper engine壁纸提取

下载提取软件RavioliGameTools_v2.10.zip https://pan.baidu.com/s/14ZCVw3ucRERsB-GGGoCOqQ 2.运行RExtractor.exe 3.Input file(s)、Output directory填好 4.勾选Allow scanning of unkown files 5.点击Start

Ceph官方文档_01_Ceph简介

目录 Ceph介绍Ceph介绍 Ceph可用于向云平台提供Ceph对象存储,Ceph可用于向云平台提供Ceph块设备服务。Ceph可用于部署Ceph文件系统。所有Ceph存储群集部署开始都是先设置每个Ceph节点,然后再设置网络。 Ceph存储集群需要以下内容:至少一个Ceph监视器和至少一个Ceph管理器,…

vulnhub靶机:Breach 2.1详细过程

下载 下载地址&#xff1a;https://www.vulnhub.com/entry/breach-21,159/ 修改网络模式 根据靶机的描述得知该靶机适用于静态ip&#xff0c;即192.168.110.151&#xff1b;配置虚拟机的虚拟网络编辑器的仅主机模式&#xff0c;将其子网IP配置在110网段&#xff0c;并将攻击…

C++初阶学习第六弹------标准库中的string类

目录 一.标准库中的string类 二.string的常用接口函数 2.1string类对象的构造 2.2 string的容量操作 2.3 string类的访问与遍历 2.4 string类对象的修改 2.5 string类常用的非成员函数 三、总结 一.标准库中的string类 可以简单理解成把string类理解为变长的字符数组&#x…

2024.9.13 Python与图像处理新国大EE5731课程大作业,索贝尔算子计算边缘,高斯核模糊边缘,Haar小波计算边缘

1.编写一个图像二维卷积程序。它应该能够处理任何灰度输入图像&#xff0c;并使用以下内核进行操作&#xff1a; %matplotlib inline import numpy as np import matplotlib.pyplot as plt from scipy import linalg import random as rm import math import cv2# import and …

linux网络编程3

24.9.19学习目录 一.UDP&#xff08;续&#xff09;1.UDP编程2.注意点2.TFTPTFTP通信过程TFTP协议分析 一.UDP&#xff08;续&#xff09; 1.UDP编程 &#xff08;1&#xff09;sendto函数发送数据 向to结构体指针中指定的ip&#xff0c;发送UDP数据&#xff1b; 通过to和ad…

时间复杂度的常用符号+渐进时间复杂度分析

时间复杂度的常用符号 Θ \Theta Θ 如果 f ( n ) Θ ( g ( n ) ) f(n)\Theta(g(n)) f(n)Θ(g(n))&#xff0c;则 f ( n ) f(n) f(n) 与 g ( n ) g(n) g(n) 同阶。&#xff08;阶是指 f ( n ) f(n) f(n) 的指数&#xff0c;比如 n 2 n^2 n2 高于 n n n&#xff09; O O …

MacOS安装homebrew,jEnv,多版本JDK

1 安装homebrew homebrew官网 根据官网提示&#xff0c;运行安装命令 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"安装后&#xff0c;bash会提示执行两条命令 (echo; echo eval "$(/opt/homebrew/b…

海康威视摄像机和录像机的监控与回放

文章目录 海康威视摄像机和录像机的监控与回放1、海康威视监控设备简介1.1、摄像机二次开发1.1.1&#xff1a;协议选择 1.2&#xff1a;web集成1.2&#xff1a;标准协议对接1.2.1&#xff1a;ffmpeg软件转流1.2.2&#xff1a;开源监控软件shinobi1.2.3&#xff1a;使用nginx的R…

黑神话悟空mac可以玩吗

黑神话悟空mac上能不能玩对于苹果玩家来说很重要&#xff0c;那么黑神话悟空mac可以玩吗&#xff1f;目前是玩不了了&#xff0c;没有针对ios系统的版本&#xff0c;只能之后在云平台上找找了&#xff0c;大家可以再观望下看看。 黑神话悟空mac可以玩吗 ‌使用CrossOver‌&…

【海康威视面经】

海康威视面经 Java基础java常用集合 及其优缺点ArrayListVectorLinkedList Jvm调优监控发现问题工具分析问题 &#xff1a;性能调优GC频繁 出现内存泄漏 内存溢出CPU飙升 Synchronized和Volatile的比较反射线程池和new thread利弊高并发 集群 分布式 负载均衡 MySQL调优基础优化…

neo4j安装启动教程+对应的jdk配置

参考这位博主的视频教程&#xff1a;neo4j社区windows版下载 一、官网下载neo4j的安装包 &#xff08;1&#xff09;官网下载页面 &#xff08;2&#xff09;上一步 【download】之后&#xff0c;会自动下载&#xff0c;如果没有&#xff0c;点击【here】 这里可以看到一行字…

Gradio 自定义组件

如何使用 Gradio 自定义组件&#xff0c;Gradio 前端使用 Svelte&#xff0c;后端使用的 Python。如何自定义一个组件呢&#xff1f;Gadio 提供了类似于脚手架的命令&#xff0c;可以生成需要开发组件的前后和后端代码。 创建组件 运行如下命令&#xff0c;gradio 会自动生成…