JavaScript(JS基础)

news2025/1/31 4:17:21

提示:JS的重点是让静态的页面产生一些变化

文章目录

  • JS编写方式
    • 嵌入编写
    • 外部编写
  • JS基本语法
    • 使用let声明变量
    • 使用var声明变量
  • JS中的数据类型
    • JS中运算符
    • ❗`==` 和 `===`
    • JS中的数据类型转换
      • 字符串类型加减乘除
      • 布尔类型加减乘除
    • 字符串与整数、小数之间的转换
  • JS流程控制语句


JS编写方式

提示:JavaScript是弱类型语言,行尾分号可写可不写

首先看下Java 与 JavaScript什么关系

嵌入编写

JS编写在script(脚本)标记中,script标记可以出现在html中的任意位置,也就是说JS代码可以嵌入在HTML中任意部分,从上到下依次执行

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <!-- 嵌入编写 编写在script(脚本)标记中,script标记可以出现在html中的任意位置 -->
    <script>
    	// 输出语句
        console.log('hello world')
    </script>
</body>
</html>

在这里插入图片描述


外部编写

script引入外部js文件,那么标记中间的代码运行时会被浏览器忽略掉,不再执行
js代码(取名hello.js):

console.log('Hello 世界');

html代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <!-- 引入外部js文件 -->
    <script src="./hello.js">
        // script引入外部js文件,那么标记中间的代码运行时会被浏览器忽略掉,不再执行
        console.log('1234');
    </script>
</body>
</html>

在这里插入图片描述

JS基本语法

JavaScript 变量的命名规范可以总结为以下几个方面:

  1. 使用有意义的、描述性的变量名
  • 变量名应该与变量所代表的值或含义相关联,能够表达变量的用途。例如:firstName, lastName, totalAmount 等。
  1. 变量命名应该符合标识符命名规则
  • 变量名必须以字母、下划线(_)或美元符号($)开头,并且可以包含字母、数字、下划线或美元符号。变量名不能以数字开头。同时要注意保留字的使用,如if、else、for等关键字不能用作变量名。
  1. 使用驼峰命名法
  • 一般情况下建议使用驼峰式命名法,即第一个单词的首字母小写,其他单词的首字母大写。例如:totalAmount, firstName, lastName。
  1. 不能使用JavaScript关键词与JavaScript保留字。

  2. 使用有意义的缩写

  • 在变量名中可以使用缩写,但是要确保缩写是大家都能理解的。例如:qty(数量), str(字符串)。
  1. 避免使用单个字符的变量名
  • 比如 i, j, k 等单字符变量名一般只在循环中使用,其他情况应该尽量避免使用。

遵循良好的变量命名规范有助于程序的可读性和可维护性。

使用let声明变量

❗ js中定义变量使用let关键字
js是弱类型语言,定义时不需要指定数据类型,变量的类型是由赋值的数据决定

【示例代码】

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <script>
        let Tom
        Tom = 200
        console.log(Tom);
        Tom = '你好世界!'
        console.log(Tom);
    </script>
</body>
</html>

在这里插入图片描述

使用var声明变量

用的比较少
❗ 定义变量也可以使用var关键字,新标准js语法,建议使用let

【示例代码】

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <script>
        Tom = 200
        var Tom
        Tom = true
        console.log(Tom);
    </script>
</body>
</html>

在这里插入图片描述

JS中的数据类型

typeof:获取当前变量的数据类型

JavaScript 中有 7 种数据类型,其中 5 种是基本数据类型,另外两种是引用数据类型。

  1. 基本数据类型:
  • 未定义(Undefined):表示未定义的值。
  • 数字(Number):整数和浮点数都属于数字类型,例如 1、3.14 等。
  • 布尔值(Boolean):true 和 false 两个值。
  • 字符串(String):例如 “hello”、‘world’ 等,用单引号或双引号包裹起来。
  • 符号(Symbol):表示独一无二的值,用于对象属性的键。
  1. 引用数据类型:
  • 对象(Object):例如数组、函数、正则表达式、空(Null)空值等对象。
  • function-函数类型:function函数

【示例代码】
这里没有写符号(Symbol)数据类型

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <script>
        //js六种数据类型
        let x
        console.log(typeof x); //1.undefined 未定义
        x = 100.3
        console.log(typeof x); //2.number 数字类型(不区分整数小数)
        x = false
        console.log(typeof x); //3.boolean 布尔类型 true/false
        x = 'abc'
        console.log(typeof x); //4.String 字符串类型 数据使用引号括起来(单引号双引号通用)
        x = []
        console.log(typeof x); //5.object 对象类型 有属性和方法可以使用
        x = function(){}
        console.log(typeof x); //6.function 函数类型 就是方法

        //特殊的number类型 NaN(Not a Nnumber)非数 Infinity无限大
        x = parseInt('abc')
        console.log( x , typeof x);
        x  = 3/0
        console.log( x , typeof x);

    </script>
</body>
</html>

在这里插入图片描述

JS中运算符

JavaScript中的运算符可以分为以下几类:||

运算符优先级
算术运算符加号+,减号-,乘号*,除号/,取模%++--
逻辑运算符&&、或ll、 非!
比较运算符等于==,不等于!=,全等于===,不全等于!==,大于>,小于<,大于等于>=,小于等于<=
赋值运算符等号=,加等+=,减等-=,乘等*=,除等/=,取模等%=
位运算符&,或l,异或^,非~,左移<<,右移>>,无符号右移>>>
条件运算符三元操作符?:,根据表达式的结果返回一个值。例如:a>b?a:b

除此之外,JavaScript还支持一些其他的运算符,例如typeof运算符,用于检测变量的数据类型;
instanceof运算符,用于检测对象是否是某个类的实例等。

还有反引号 `
在这里插入图片描述

【示例代码】

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <script>
        //1. / 除法  不同于Java的除法规则
        console.log(3/2);
        //2. + 与Java相同
        let name = '汤姆'
        let nick = '抓杰瑞'

        console.log('大家好我是' + name + ',AKA' + nick );
        //3.js最新版本引入了模版字符串的语法 替代+字符串连接符  使用反引号``
        console.log( `大家好我是${name},AKA${nick}` );
    </script>
</body>
</html>

在这里插入图片描述

=====

===== 的区别

  1. == 比较时会将比较的数据先转换成相同类型,再去比较数据值
  2. === 严格比较,类型和数据值都相同,结果才是true
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <script>
        console.log(11=='11');
        console.log(11==='11');
    </script>
</body>
</html>

在这里插入图片描述

JS中的数据类型转换

字符串类型加减乘除

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <script>
        let num1 = '10'
        let num2 = '5'
        console.log(num1+num2);
        console.log(num1-num2);
        console.log(num1*num2);
        console.log(num1/num2);
    </script>
</body>
</html>

输出结果:
在这里插入图片描述
字符串类型数据 在做 - * / 运算时,js默认会把它转换成number类型

布尔类型加减乘除

给num1和num2重新赋值,一个true一个false

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <script>
        num1 = true
        num2 = false
        console.log(num1+num2);
    </script>
</body>

</html>

输出1
在这里插入图片描述
布尔类型数据在做 + - * / 运算时,js默认会把true转换成1,false转换成0再去运算

字符串与整数、小数之间的转换

parseInt()将字符串转换为整数
pareFloat()将字符串转换成小数

【示例代码1】

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <script>
        //pareFloat将字符串转换成小数
        let s1 = '10'
        let s2 = '10.5'
        s1 = parseInt(s1)
        s2 = parseFloat(s2)
        console.log(s1+s2);
    </script>
</body>
</html>

输出结果:
在这里插入图片描述

【示例代码2】

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <script>
        //pareFloat将字符串转换成小数
        let s1 = '10'
        let s2 = '52.1'
        s1 = parseInt(s1)
        s2 = parseInt(s2)
        console.log(s1+s2);
    </script>
</body>
</html>

输出结果:
在这里插入图片描述

JS流程控制语句

JS流程控制语句指的是用于控制程序执行流程的语句,包括条件语句和循环语句。

  1. 条件语句
  • if语句:通过判断一个条件,决定是否执行后面的代码块。
if (condition) {
  // 如果condition为true,则执行这里的语句块
}
  • if…else语句:根据先前判断的条件,分别执行不同的代码块。
if (condition) {
  // 如果condition为true,则执行这里的语句块
} else {
  // 如果condition为false,则执行这里的语句块
}
  • if…else if…else语句:根据多个条件依次判断,分别执行不同的代码块。
if (condition1) {
  // 如果condition1为true,则执行这里的语句块
} else if (condition2) {
  // 如果condition2为true,则执行这里的语句块
} else {
  // 如果既不是condition1也不是condition2,则执行这里的语句块
}
  • switch语句:根据一个表达式的值,依次执行不同的代码块。
switch(expression) {
  case value1:
    // 如果expression的值和value1相等,则执行这里的语句块
    break;
  case value2:
    // 如果expression的值和value2相等,则执行这里的语句块
    break;
  default:
    // 如果expression的值既不是value1也不是value2,则执行这里的语句块
}
  1. 循环语句
  • while循环:只要指定的条件为true,就不断地执行循环体中的代码块。
while (condition) {
  // 如果condition为true,则执行这里的语句块
}
  • do…while循环:先执行一次循环体中的代码块,然后只要指定的条件为true,就不断地执行循环体中的代码块。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <script>
        let num = 3452
        do {
            console.log( num%10 );     //2     5     4    3
            num = Math.trunc( num/10 ) //345   34    3    0
        } while (num!=0);
    </script>
</body>
</html>

在这里插入图片描述
这段代码实现了一个反向输出一个整数的各个位数的功能。代码执行步骤如下:

  1. 定义一个变量num并赋值为3452。
  2. 进入do…while循环,先执行循环体内的代码块。
  3. 执行console.log(num%10)语句,输出num除以10的余数,即num的个位数。此时输出为2。
  4. 执行Math.trunc(num/10)语句,将num除以10并向下取整,得到num去掉个位数后的整数部分。此时num变为345。
  5. 判断num是否为0。由于num不为0,继续进行下一次循环。
  6. 重复步骤3~5,输出num的十位数5、百位数4和千位数3,直到num为0时循环结束。
  7. 整数的每个位数依次反向输出:2、5、4、3。

  • for循环:设定一个计数器并设置循环的终止条件,每次循环时更新计数器的值。
for (initialization; condition; increment) {
  // initialization:初始化变量
  // condition:设置循环的终止条件
  // increment:计数器增加的量
  // 执行这里的语句块
}

【示例代码】
使用for循环,输出100-999之间所有的水仙花数

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <script>
        //使用for循环,输出100-999之间所有的水仙花数
        //153=1*1*1 + 5*5*5 + 3*3*3
        for (let num = 100; num < 1000; num++) {
            let b = Math.trunc(num/100)
            let s = Math.trunc(num/10%10)
            let g = Math.trunc(num%10)
            if(num == b*b*b + s*s*s + g*g*g)
            console.log(`水花仙数:${num}`)
        }
    </script>
</body>
</html>

输出结果:
在这里插入图片描述

  • for…in循环:用于遍历对象的所有可枚举属性。
for (var prop in object) {
  // prop:枚举属性名
  // object:要枚举属性的对象
  // 执行这里的语句块
}
  • for…of循环:用于遍历可迭代对象(如数组、字符串等)的所有元素。
for (var element of iterable) {
  // element:当前遍历到的元素
  // iterable:要遍历的可迭代对象
  // 执行这里的语句块
}

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

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

相关文章

【javascript】二维码

javascript二维码的生成可以用第三方库qrcode.js。 下载地址&#xff1a;https://gitcode.net/mirrors/davidshimjs/qrcodejs 解压后打开index.html文件输入百度地址回车&#xff0c;就可以看到指定页面的二维码了。 html代码&#xff1a; <!DOCTYPE html PUBLIC "-/…

2.Elasticsearch核心概念

一、Es中的核心概念 elasticsearch中有很多独有的概念,与mysql中略有差别,但也有相似之处 1.1文档和字段 一个文档就像数据库里的一条数据,字段就像数据库里的列 elasticsearch是面向文档(Document)存储的,可以是数据库中的一条商品数据,一个订单信息。文档数据会被序…

[Flink]wordcount

一、有界流 1、代码 package wc;import org.apache.flink.api.common.functions.FlatMapFunction; import org.apache.flink.api.java.functions.KeySelector; import org.apache.flink.api.java.tuple.Tuple2; import org.apache.flink.streaming.api.datastream.DataStream…

【UIAutomator2相关问题】UIAutomator2初始化无法自动安装ATX插件的解决方法

UIAutomator2初始化无法自动安装ATX插件的解决方法.md 文章目录 UIAutomator2初始化无法自动安装ATX插件的解决方法.md安装步骤第一步 安装 uiautomator-server第二步 安装 atx-agent第三步 点击ATX软件测试 总结 安装步骤 第一步 安装 uiautomator-server 在链接https://git…

提升搜索引擎效率:使用 Elasticsearch 别名

​ ​Elasticsearch 因其强大的搜索能力而备受推崇&#xff0c;使其成为构建高性能搜索引擎的热门选择。其中一个关键特性是使用别名&#xff0c;Elasticsearch 的别名为优化搜索操作、提升查询性能以及启用动态索引管理提供了强大的机制。在本文中&#xff0c;我们将探讨如何使…

如何选择最适合企业的自动化测试工具?

在软件开发过程中&#xff0c;测试是不可或缺的环节。而自动化测试工具则能够提高测试效率&#xff0c;减少人力成本&#xff0c;为企业带来更好的收益。但如何选择最适合企业的自动化测试工具呢&#xff1f;下面就为大家介绍一些选择自动化测试工具的方法和要点。 1.明确测试…

新版危废标签解读及制作教程分享

《HJ 1276-2022危险废物识别标志设置技术规范》&#xff08;以下简称为《规范》&#xff09;将于7月1日起正式实施。新的《规范》具体规定了产生、收集、贮存、利用、处置危险废物单位需设置的危险废物识别标志的分类、内容要求、设置要求和制作方法。 为方便企业更好地了解《…

AGRCZO-A-10/315先导比例减压阀放大器

AGRCZO-A-10/50、AGRCZO-A-10/100、AGRCZO-A-10/210/I、AGRCZO-A-10/315、AGRCZO-A-20/50、AGRCZO-A-20/100/U0/PE、AGRCZO-A-20/210、AGRCZO-A-20/315先导式比例减压阀 在比例溢流导阀2与主阀座0中间配有压力过载保护的手调溢流阀3。此阀流量范围比较大&#xff0c;一般用在系…

基于SpringBoot+vue的旅游管理系统设计与实现

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

大数据面试题:Zookeeper架构

面试题来源&#xff1a; 《大数据面试题 V4.0》 大数据面试题V3.0&#xff0c;523道题&#xff0c;679页&#xff0c;46w字 可回答&#xff1a; 1&#xff09;说一说Zookeeper中的角色 问过的一些公司&#xff1a;京东提前批(2020.07)&#xff0c;蘑菇街实习(2020.03) 参…

ML@集成学习中结合策略

文章目录 集成学习中结合策略结合策略平均法简单平均法加权平均法 投票法绝对多数投票法MV相对多数投票法PV加权投票法WV小结其他投票法技巧 学习法Stacking伪代码次级训练集的生成&#x1f388; refs更多集成学习相关参考 Skearn中的集成学习引言摘要翻译1翻译2 集成学习中结合…

界面开发框架Qt新手入门教程:如何使用Calendar组件创建日历(二)

Qt 是目前最先进、最完整的跨平台C开发工具。它不仅完全实现了一次编写&#xff0c;所有平台无差别运行&#xff0c;更提供了几乎所有开发过程中需要用到的工具。如今&#xff0c;Qt已被运用于超过70个行业、数千家企业&#xff0c;支持数百万设备及应用。 本文中的CalendarWi…

基于区块链技术的旅游积分通兑系统设计

基于区块链技术的旅游积分通兑系统设计 贵向泉1,2, 郭志礼1, 杨裔2,3&#xff0c;秦炳峰4 1 兰州理工大学计算机与通信学院&#xff0c;甘肃 兰州 730050 2 兰州大学旅游信息融合处理与数据权属保护文化和旅游部重点实验室&#xff0c;甘肃 兰州 730000 3 兰州大学信息科学与工…

Linux驱动学习(4) MTD字符驱动和块驱动3

系列文章目录 Linux驱动学习&#xff08;4&#xff09; MTD字符驱动和块驱动1 Linux驱动学习&#xff08;4&#xff09; MTD字符驱动和块驱动2 Linux驱动学习&#xff08;4&#xff09; MTD字符驱动和块驱动3 文章目录 目录 系列文章目录 文章目录 前言 二、MTD块设备驱…

NXP i.MX 6ULL工业核心板硬件说明书( ARM Cortex-A7,主频792MHz)

1 硬件资源 创龙科技SOM-TLIMX6U是一款基于NXP i.MX 6ULL的ARM Cortex-A7高性能低功耗处理器设计的低成本工业级核心板&#xff0c;主频792MHz&#xff0c;通过邮票孔连接方式引出Ethernet、UART、CAN、LCD、USB等接口。核心板经过专业的PCB Layout和高低温测试验证&…

一篇文章带你从入门都入土 RocketMQ 消息中间件

目录 一、下载、安装 二、基本演示 2.1 创建项目导入依赖 2.2 生产者发送消息 2.3 消费者消费消息 三、topic 、broker、messageQueue之间的关系 四、普通消息 4.1 普通消息生命周期 4.2 可靠同步发送 4.3 可靠异步发送 4.4 单向发送 五、顺序消息 5.1 如何保证消…

机器学习之朴素贝叶斯(Naive Bayes)

1 朴素贝叶斯算法介绍 朴素贝叶斯是经典的机器学习算法之一&#xff0c;也是为数不多的基于概率论的分类算法。朴素贝叶斯分类器(Naive Bayes Classifier 或 NBC)发源于古典数学理论&#xff0c;有着坚实的数学基础&#xff0c;以及稳定的分类效率&#xff0c;是应用最为广泛的…

python发送邮件,超简单!

1、我的使用场景 最近有几个爬虫定时任务在运行&#xff0c;需要及时知道发生异常&#xff0c;以便于处理&#xff0c;于是&#xff0c;想到了邮件&#xff0c;记录一下。 2、邮箱服务设置 我是专门为这个脚本注册的&#xff0c;如果有&#xff0c;也可以不注册。 注册完&a…

Transformer(四)--实现验证:transformer 机器翻译实践

转载请注明出处&#xff1a;https://blog.csdn.net/nocml/article/details/125711025 本系列传送门&#xff1a; Transformer(一)–论文翻译&#xff1a;Attention Is All You Need 中文版 Transformer(二)–论文理解&#xff1a;transformer 结构详解 Transformer(三)–论文实…

sql server 触发器往链接服务器同步数据的坑

链接服务器无法启动分布式服务 检查数据库是否勾选了一下按钮&#xff0c;双方都要检查 链接服务器属性&#xff0c;需要检查这些地方是否已经设置为true 该伙伴事务管理器已经禁止了它对远程/网络事务的支持 双方启动MSDTC服务 (1)在windows控制面版–>windows 工具->…