JavaScript基础(二)

news2025/1/13 13:36:58

JavaScript基础(一)

相信看完上一篇文章的你对变量的类型和使用已经了解了,接下来我们将对变量间的转化以及Js中的三大结构展开叙述。

类型转换

首先,我们要了解为什么我们需要转换类型呢?

在表单提交中,我们的数据是以字符形式存在的,所以当我们得到数据后如果想对其操作,就必须转化为我们想要的类型。

其次,我们要明白类型转化并不是随便执行的,比如我们不能把“abc”转化成Number类型。

最后,类型转换中分为两种:显示转换,隐式转换。

1.显示转换

显示转换直白讲就是调用函数来转换类型。

转化为Number类型 

1 . Number(数据)
● 转换成功返回一个数字类型
● 转换失败则返回 NaN (例如数据里面包含非数字)
2 . parseInt(数据)
● 只保留整数
● 如果数字开头的字符串,只保留整数数字 比如 12px 返回 12
3 . parseFloat(数据)
● 可以保留小数
● 如果数字开头的字符串,可以保留小数 比如 12.5px 返回 12.5

不难发现,不是纯数字组成的字符串似乎也能转化成Number类型,只要数字开头就可以截取一部分数字转化成Number类型,那如果我们不是数字开头,是否也会这么神奇呢?

<!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>
    <script>
        test = "a1234";
        test = parseInt(test);
        console.log(test);
    </script>

</body>

</html>

遗憾的是,控制台返回的结果是NaN(not a number),这说明我们转化失败了。

那么,如果是布尔类型呢?是否能像Python一样true转化为1,false转化为0呢?

<!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>
    <script>
        test = true;
        test = parseInt(test);
        console.log(test);
    </script>

</body>

</html>

再次遗憾的是,不能,输出结果仍然是NaN。 

总结:

对于转化为Number类型的数据类 ,只有纯数字,或者数字开头的字符串能转化为Number类型,且转化方法不同,返回结果也不同。

 

转化为字符型和布尔型

 

字符串除了记住方法外没太多需要注意的,数字型和布尔型都可以转化为字符型。

 

2.隐式转换

 

隐式转换你可以认为是通过某些操作符来潜在地改变数据的类型,比如对待Number类型:

 

<!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>
    <script>
        a = '5';
        console.log(18 - a);
    </script>

</body>

</html>

返回结果是13,这说明其实在计算过程中我们自动把a转化为了Number类型进行计算,但是我们并没有调用任何函数。 

 

三大结构

 如果你学习C语言的话,那么接下来的内容与C语言中的三大结构一致,即if-else,switch,三元运算符,while,for语法都是和C语言一致的,你可以直接跳过这部分。如果你没学过C语言,那我们就继续往下走~

1.顺序结构

简而言之,顺序结构是最普遍和最简单的结构,而后续选择结构和循环结构也只是插入到顺序结构中发挥作用的。顺序结构按照自上而下的顺序依次执行代码,没了。

2.选择结构

选择结构解决的就是代码的执行方向该何去何从的问题,它为顺序结构添加了分支选项。选择结构中包含if-else判断,switch判断,以及三元运算符。

那么我们就先从if-else开始吧:

if(条件){

        语句;

}

这是最简单的if判断,如果条件为真,那么就进入if语句块中执行语句。

if(条件){

        语句1;

}

else{

语句2;

}

这是更加复杂一点的判断语句,如果满足条件,那么执行语句1,否则执行语句2。

如果我们想要进行多条判断呢?

我们可以使用else if语句

if (score >= 90) {
alert('优秀,棒棒棒~')
} else if (score >= 70) {
alert('良好,棒棒~')
} else if (score >= 60) {
alert('及格,棒~')
} else {
alert('不及格,好好加油,你可以的~')
}

Switch语句

使用场景: 适合于有多个条件的时候,也属于分支语句,大部分情况下和 if多分支语句 功能相同
注意:
1 . switch case语句一般用于等值判断, if适合于区间判断
2 . switchcase一般需要配合break关键字使用 没有break会造成case穿透
3 . if 多分支语句开发要比switch更重要,使用也更多

 

 

// switch分支语句
// 1. 语法
// switch (表达式) {
// case 值1:
// 代码1
// break
// case 值2:
// 代码2
// break
// ...
// default:
// 代码n
// }
// 2. 体验: 查询水果价格,输入水果,得到当前水果价格
let fruits = '苹果'
switch (fruits) {
case '香蕉':
alert('香蕉的价格是: 3元/斤')
break
case '苹果':
alert('苹果的价格是: 4元/斤')
break
case '橘子':
alert('橘子的价格是: 2元/斤')
break
default:
alert('没有查到此水果')
}
// 3. 注意事项
// 3.1 switch适合于等值判断, if多分支适合于区间判断
// 3.2 表达式的值要求 全等于 === case的值,才是能匹配上
// 3.3 break如果落下了,容易造成case穿透

 相信你已经发现了,switch(a)其实就是通过判断a是下列case哪种情况,那么就进到哪个case中,switch用到了标签的性质,假设我们进入到香蕉的情况下,没加break,那么它就会一一直顺延下去,直到遇到break或跳出判断。这就是case穿透。

三元运算符 

条件?表达式1:表达式2

意思就是如果条件为真,那么就执行表达式1,条件为假。执行表达式2。

三元运算符支持嵌套,不过不建议使用嵌套,会很混乱。

3.循环结构

终于到最后一种结构了,循环结构就是反复执行一部分代码,比如我想从1加到100,那么我就可以写:

<!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>
    <script>
        n = 0;
        let res = 0;
        while (n++ < 100) {
            res += n

        }
        console.log(res);

    </script>

</body>

</html>

循环条件用到之前的知识,意思很简单,先判断n是否小于100,如果为真,那么n自增1进入循环,否则退出循环。

循环三要素:
1.初始值 (经常用变量)
2.循环条件
3.变量计数(常用自增或者自减) 

虽然叫三要素,但也不是都必须要有,比如PyQt中的循环是不需要这三要素的,它的循环与否取决于用户是否执行退出函数。

上面我们介绍完while循环,接下来就是最后的for循环了,因为for循环把声明初始值、循环条件、变量计数写到一起,让人一目了然,所以for循环比while循环使用更加广泛。

语法:for(let i = 0;i<10;i++){statements},注意,条件之间用分号隔开。

如果想要终止循环,可以使用break关键词,如果想跳过本次循环,直接进入下次循环,可以使用continue关键词。

至此,三大结构结束,三大结构是Javascript乃至整个编程中非常基础的存在,非常重要。

 

 

 

 

 

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

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

相关文章

CCF-CSP真题题解:201409-3 字符串匹配

201409-3 字符串匹配 #include <iostream> #include <cstring> #include <algorithm> using namespace std;int n, type; string s, p;string tolower(string s) {string res;for (char c : s) res tolower(c);return res; }int main() {cin >> p >…

给rwkv_pytorch增加rag

RAG 参考地址语义模型地址选择该模型使用方法方法二安装方法下载模型到本地材料材料处理语义分割计算得分根据得分 分割文本 构建向量数据库问答匹配问答整合 参考地址 RAG简单教程 分割策略 语义模型地址 hf 选择该模型 gte 使用方法 import torch.nn.functional as F…

开源博客项目Blog .NET Core源码学习(18:App.Hosting项目结构分析-6)

本文学习并分析App.Hosting项目中后台管理页面的_AminLayout.cshtml模版页面和登录页面。 _AminLayout.cshtml模版页面 后台管理页面中的大部分页面都使用_AminLayout.cshtml作为模板页面&#xff0c;如下图所示&#xff0c;后台页面的视图内容放置在表单中&#xff0c;使用la…

再回顾const int* p, int const* p,int* const p 的区别

目录 一、const int* p 和 int const* p &#xff08;常量指针&#xff09; 1.1 p 指向的内存不能通过指针p 修改1.2 其他指针可以修改p 指向的内存1.3 指针p 可以重新指向其他地址 二、int* const p &#xff08;指针常量&#xff09; 2.1 p 定义的时候初始化2.2 p 定义的时候…

Adobe推出AI视频超分辨率工具VideoGigaGAN

&#x1f989; AI新闻 &#x1f680; Adobe推出AI视频超分辨率工具VideoGigaGAN 摘要&#xff1a;Adobe公司最新推出的AI工具VideoGigaGAN&#xff0c;利用上采样技术将视频分辨率从128128提升至10241024。这一工具基于GigaGAN模型开发&#xff0c;专注于生成视频超分辨率&am…

利用大型语言模型提升个性化推荐的异构知识融合方法

在推荐系统中&#xff0c;分析和挖掘用户行为是至关重要的&#xff0c;尤其是在美团外卖这样的平台上&#xff0c;用户行为表现出多样性&#xff0c;包括不同的行为主体&#xff08;如商家和产品&#xff09;、内容&#xff08;如曝光、点击和订单&#xff09;和场景&#xff0…

前端性能优化知识梳理

1.重要性 当我们面试的时候&#xff0c;前端性能优化方面算是必考的知识点&#xff0c;但是工作中我们又很少会重点的对项目进行前端优化&#xff0c;它真的不重要吗&#xff1f; 如果我们可以将后端响应时间缩短一半&#xff0c;整体响应时间只能减少5%~10%。而如果关注前端…

自动化神器,获客秘籍揭秘!

在如今这个信息爆炸的时代&#xff0c;企业如何高效精准地获客成为了一个重要课题。传统的营销方式不仅成本高昂&#xff0c;且效果往往难以衡量。然而&#xff0c;随着自动化工具的兴起&#xff0c;这一切都在悄无声息中发生着翻天覆地的变化。 我们得了解一下什么是自动化工具…

【ZYNQ】Zynq 开发流程

Zynq 芯片架构由嵌入式处理器&#xff08;Processing System, PS&#xff09;与可编程逻辑&#xff08;Programmable Logic, PL&#xff09;&#xff0c;以及 PS 与 PL 之间的互联总线组成。本文主要介绍 Xilinx Zynq 芯片开发所使用的软件&#xff0c;包括 Vivado IDE 与 Xili…

2024最新的,免费的 ChatGPT 网站AI(八个)

ChatGPT是美国人工智能研究实验室OpenAI在2022年11月推出的一款人工智能技术驱动的语言模型应用。它基于GPT-3.5架构&#xff08;后续还有GPT-4架构的升级版&#xff09;构建&#xff0c;拥有强大的自然语言处理能力和上下文理解能力&#xff0c;能够参与多轮对话&#xff0c;为…

C语言中的趣味代码(五)

我想以此篇结束关于C语言的博客&#xff0c;因为在C语言拖得越久越不能给大家带来新的创作&#xff0c;在此我也相信大家对C语言已经有了一个新的认知。进入正题&#xff0c;在这一篇中我主要编一个“英语单词练习小程序”来给大家展开介绍&#xff0c;从测试版逐步改良&#x…

C语言入门课程学习笔记-7

C语言入门课程学习笔记-7 第31课 - 初探程序中的函数实验-函数调用实验-函数求前n个正整数和 第32课 - 深入浅出函数调用第33课 - 函数定义细节剖析实验-返回int实验-返回void 第34课 - 函数参数深度剖析实验-形参实参实验-数组元素作为函数形参小结 第35课 - 编写函数对数组排…

前端: 浏览器调试小技巧

1. 如何禁止某个网站跳转: 用于拦截网站地址 2. 如何在线上环境调试源代码, 给源代码打断点 3. 如何在线编写代码 线上调试代码: network -> 找到加载的html文件 -> 右击 -> 选择override content (浏览器的代理调试程序) -> 可以在线写代码啦 4. 如何通过浏览器…

电脑提示msvcr110.dll文件丢失的常见问题以及解决方案

在使用电脑时突然提示msvcr110.dll文件丢失的问题&#xff0c;这是一个的常见问题接下俩这篇文章将教大家几种以及msvcr110.dll丢失的解决方案&#xff0c;用户可能会遇到一些常见问题&#xff0c;这些问题可能会影响他们的软件运行或系统稳定性。以下是一些常见问题及其解决方…

R语言的学习——day1

将数据框中某一列数据改成行名 代码 结果

可平滑替代FTP的FTP替代解决方案,具有哪些强大功能?

FTP是一种广泛使用的文件传输协议&#xff0c;主要用于在网络上的计算机之间传输文件。具有以下特点&#xff1a; 1.简单易用&#xff1a;FTP协议相对简单&#xff0c;易于设置和使用&#xff0c;许多操作系统和应用程序都内置了对FTP的支持。 2.广泛的客户端支持&#xff1a…

C++三大特性及应用

C三大特性 面向对象程序设计&#xff08;OOP&#xff09;是一种编程范式&#xff0c;它使用“对象”来设计软件。在OOP中&#xff0c;对象是类的实例&#xff0c;类包含数据&#xff08;属性&#xff09;和可以对数据执行操作的方法&#xff08;行为&#xff09;。 面向对象的…

Ieetcode——21.合并两个有序链表

21. 合并两个有序链表 - 力扣&#xff08;LeetCode&#xff09; 合并两个有序链表我们的思路是创建一个新链表&#xff0c;然后遍历已知的两个有序链表&#xff0c;并比较其节点的val值&#xff0c;将小的尾插到新链表中&#xff0c;然后继续遍历&#xff0c;直到将该两个链表…

请求路径引发的http308错误

记录一个请求路径输错引发的问题。 正确路径&#xff1a; /user/bind-email 请求路径我们如果输错故意多打一个s /user/bind-emails 正常预检请求会报错404未找到&#xff0c;我们下意识的就去排查路径是不是写错了 但是如果多打一个/ /user//bind-email 此时预检请求会报308永…

【iOS】消息流程分析

文章目录 前言动态类型动态绑定动态语言消息发送objc_msgSendSEL&#xff08;selector&#xff09;IMP&#xff08;implementation&#xff09;IMP高级用法 MethodSEL、IMP、Method总结流程概述 快速查找消息发送快速查找的总结buckets 慢速查找动态方法解析resolveInstanceMet…