JavaScript基础入门2

简介: JavaScript基础入门

3.3.3 比较运算符

比较运算符,是两个数据进行比较时所使用的运算符,比较运算后,会返回一个布尔值(true / false)作为运算结果。

// 普通比较运算符
<
>
>=
<=
==  // 不会比较数据类型 (18 == '18' 为真)
=== // 会比较数据类型
!=
!== // 全不等(包括数据类型)
  • 比较运算符两侧表达式先转为布尔型再进行比较
  • '0' 用 Boolen() 做判断的时候是 true,但是用 == 比较运算符和布尔值比较的时候 '0' 是 false,但 '0' == 0 是真
  • undefined 和 null 在 Boolen() 做判断的时候是 flase,但是用 == 比较的时候他们不等于 false
  • NaN 和任何值都不相等,包括它本身,即 NaN == NaN 为假

3.3.4 逻辑运算符

逻辑运算符 说明
&& 逻辑与
|| 逻辑或
! 逻辑非
  • 如果只是普通逻辑运算(两侧都是布尔型),返回的还是布尔型
  • 与 undefined, null 做 && 运算返回 undefined, null
  • !1 返回 false

3.3.5 逻辑运算短路

逻辑与运算短路

// 当表达式1和2为真时,返回表达式2
console.log(123 && 456);  // 返回456
// 当表达式1为假时,直接返回表达式1
console.log(0 && 456);  // 返回0

逻辑或运算短路

// 当表达式1为真,则返回表达式1
// 当表达式1为假,则返回表达式2
var num = 1;
console.log(123 || num++);
console.log(num);  // 1

3.3.6 赋值运算符

num += 2;  // 相当于 num = num + 2
num -= 1;
num *= 1;
num /= 1;

3.3.7 运算符优先级

运算符 结合性 优先级
.、[ ]、( ) 从左到右 最高
++、--、-、!、new、typeof 从右到左
*、/、% 从左到右
+、- 从左到右
<、<=、>、>=、in、instanceof 从左到右
==、!=、===、!== 从左到右
&& 从左到右
II 从左到右
?: 从右到左
=、*=、/=、%=、+=、-=、&=、^=、!= 从右到左
, 从左到右 最低


任何写这种式子的人都是神经病:

var s = 4 >= 6 || 'a' != 'b' && !(12 * 2 == 144) && true
console.log(s)  // true
  • 赋值运算符优先级最低,先不用看它
  • 然后是逻辑运算符 || 和 &&,从左到右开始
  • 4 >= 6 为 false,所以看右侧返回值
  • 右侧的三个 && 返回的都是 true,最后表达式返回 true

如果最右侧表达式是数值的话,则返回数值


3.4 流程控制

3.4.1 顺序结构

A -> B -> C

3.4.2 选择结构

3.4.2.1 if 分支结构

单分支结构

if (条件表达式) {
    // 执行语句
}
// 其他代码
  • 当条件表达式为真时,程序进入分支,执行完毕后,继续执行其他代码
  • 当条件表达式为假时,程序直接跳过条件分支,执行其他代码

双向分支

if (条件表达式) {
    // 执行语句
} else {
    // 执行语句
}

// 其他代码

  • 当条件表达式为真时,程序进入分支,执行完毕后,继续执行其他代码
  • 当条件表达式为假时,程序执行 else 代码块中的代码,执行完毕后再执行其他代码

多分支结构

if (条件表达式1) {
    // 执行语句1
} else if (条件表达式2) {
    // 执行语句2
} else {
    // 执行语句3
}

// 其他代码

  • 如果满足条件表达式1,则执行执行语句1,直接跳出
  • 如果不满足,则判断条件表达式2,为真则执行语句2,不为真则去执行 else

多分支语句只是多选一,最后只有一个语句执行

例:判断分数

var score = promot('请输入分数:')
if (score >= 90) {
    alert('优')
} else if (score >= 80) {
    alert('良')
} else if (score >= 60) {
    alert('中')
} else {
    alert('差')
}

3.4.2.2 三元运算符

如果条件表达式结果为真,则返回表达式1,的值,否则返回表达式2的值

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

//输入一个 0~59 数字,如果小于10,则在数字前边补0
var time = prompt('请输入一个0~59的数字');
console.log(time<10 ? '0' + time : time);

3.4.2.3 Switch

switch(表达式){
    case value1:
        // 执行语句1
        break;
    case value2:
        // 执行语句2
        break;
    default:
        // 如果无条件满足,最终执行语句
}

开发中表达式通常写为变量,变量值需要和 case 的 value 值全匹配,值和数据必须完全一致

Switch 与 IF 区别

  1. switch...case 语句通常处理 case 为比较确定值的情况,if...else语句通常用于范围判断(大于、小于)
  2. switch 语句进行条件判断直接跳转到case,效率更高,if 语句是顺序判断,效率低

3.5 循环结构

3.5.1 for 循环

for(初始化变量; 条件表达式; 操作表达式){
    // 循环体
}

// 初始化变量: 用 var 声明的一个普通变量,通常用于计数器使用

// 条件表达式: 用来判断每一次循环是否继续执行,是终止的条件

// 操作表达式: 是每次循环最后执行的代码,经常用于计数器变量的更新(递增或递减)

例:输出一百句你好

for(var i = 1; i<=100; i++){
    console.log('你好');
}

例:从0加到100

var sum =0;
for(var i = 1; i<=100; i++){
    sum+=i;
}

3.5.2 嵌套循环

for (外层循环初始化变量; 外层循环表条件达式; 外层操作表达式){
    for(内层循环初始化变量; 内层循环表条件达式; 内层操作表达式){
        // 循环代码
    }
}

外层循环一次,内层循环执行全部

例:输出 5x5 的 *

var str = "";
for (var i = 1; i <= 5; i++) {
    for (var j = 1; j <= 5; j++) {
        str = str + "*";
    }
    str = str + "\n";
}
console.log(str);

3.5.3 while 循环

while(条件表达式){
    // 循环体
}

例:用 while 实现从1加到100

var num=1;
while(num<=100){
    console.log(num);
    num++;
}

while 循环一般需要配一个计数器,然后再循环体内设置一个终止循环,否则会陷入死循环

3.5.4 do while 循环

do {
    // 循环体
} while(条件表达式)

和 while 循环比,do while 循环至少需要执行一次,然后进行判断是否终止循环。

3.5.5 continue 和 break

  • break 关键字用于直接跳出循环
  • continue 关键字用于立即跳出本次循环,进入下一次循环


3.5.6 断点调试

在 Chrome 中 F12 进入调试模式,进入 Sources,在代码行数下断点,然后刷新则会进入到断点

3.6 数组

数组可以把一组相关的数据一起存放,并提供方便的访问方式。

3.6.1 创建数组

// 利用对象创建数组
var arr = new Array();
// 利用 [] 快捷创建数组
var arr = [];
var arr = [1, 2, 3, 'Pink', True];

3.6.2 访问数组元素

数组可以通过索引来访问、设置、修改对应的数组元素,可以通过 “数组名[索引]“ 的方式来获取数组中的元素。

var arr1 = ['张三', '李四', '王五', '淑芬'];
// 索引号:   0       1      2      3
console.log(arr1);  // 输出整个数组所有元素
console.log(arr1[0]);  // 使用 数组名[索引号] 获取数组数组内指定元素的值

3.6.3 遍历数组

arr= ['a', 'b', 'c', 'd'];
for (var i = 0; i <= 3; i++) {
    console.log(arr[i]);
}

3.6.4 数组长度属性 length

arr= ['a', 'b', 'c', 'd'];
console.log(arr.length);  // 输出4

利用 length 添加新的数组元素

arr = ["a", "b", "c", "d"];
arr[arr.length] = 'e';
console.log(arr[arr.length - 1]);
// 输出结果
e

3.6.5冒泡排序

var arr = [5, 4, 3, 2, 1];
for (var i = 0; i < arr.length - 1; i++) { // 外层循环
    for (var j = 0; j <= arr.length - i - 1; j++) {
        if (arr[j] > arr[j + 1]) {
            var temp = arr[j];
            arr[j] = arr[j + 1];
            arr[j + 1] = temp;
        }
    }
}
console.log(arr);

3.7 函数

3.7.1 声明函数

// 声明函数
function 函数名(){
    // 函数内部代码,又称为函数体
}
// 调用函数
函数名();  

例:将1~100 累加封装成函数

function sum(){
    var sum = 0;
    for(var i=1; i<=100; i++){
        sum = sum+i;
    }
    console.log(sum);
}
sum();

3.8 作用域

全局变量:

  • 变量在<script>标签之内,或者是一个单独js文件
  • 如果在函数内部没有声明的变量也属于全局变量(即在函数内部可以使用外部的变量)
  • 浏览器关闭才会销毁


局部变量:

  • 变量声明在函数内部
  • 函数的形参也可以看做是局部变量
  • 函数执行完毕就会销毁

链式作用域:

  • 函数内部可以调用父集中的变量
1. var n
目录
打赏
0
0
0
0
1
分享
相关文章
前端大模型入门(一):用 js+langchain 构建基于 LLM 的应用
本文介绍了大语言模型(LLM)的HTTP API流式调用机制及其在前端的实现方法。通过流式调用,服务器可以逐步发送生成的文本内容,前端则实时处理并展示这些数据块,从而提升用户体验和实时性。文章详细讲解了如何使用`fetch`发起流式请求、处理响应流数据、逐步更新界面、处理中断和错误,以及优化用户交互。流式调用特别适用于聊天机器人、搜索建议等应用场景,能够显著减少用户的等待时间,增强交互性。
1252 2
【JavaScript】——JS基础入门常见操作(大量举例)
JS引入方式,JS基础语法,JS增删查改,JS函数,JS对象
React 静态网站生成工具 Next.js 入门指南
【10月更文挑战第20天】Next.js 是一个基于 React 的服务器端渲染框架,由 Vercel 开发。本文从基础概念出发,逐步探讨 Next.js 的常见问题、易错点及解决方法,并通过具体代码示例进行说明,帮助开发者快速构建高性能的 Web 应用。
186 10
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
693 1
如何使用Puppeteer和Node.js爬取大学招生数据:入门指南
本文介绍了如何使用Puppeteer和Node.js爬取大学招生数据,并通过代理IP提升爬取的稳定性和效率。Puppeteer作为一个强大的Node.js库,能够模拟真实浏览器访问,支持JavaScript渲染,适合复杂的爬取任务。文章详细讲解了安装Puppeteer、配置代理IP、实现爬虫代码的步骤,并提供了代码示例。此外,还给出了注意事项和优化建议,帮助读者高效地抓取和分析招生数据。
175 0
如何使用Puppeteer和Node.js爬取大学招生数据:入门指南
一小时入门Vue.js前端开发
本文是作者关于Vue.js前端开发的快速入门教程,包括结果展示、参考链接、注意事项以及常见问题的解决方法。文章提供了Vue.js的基础使用介绍,如何安装和使用cnpm,以及如何解决命令行中遇到的一些常见问题。
334 5
一小时入门Vue.js前端开发
前端开发:Vue.js入门与实战
【10月更文挑战第9天】前端开发:Vue.js入门与实战
前端大模型入门:Transformer.js 和 Xenova-引领浏览器端的机器学习变革
除了调用API接口使用Transformer技术,你是否想过在浏览器中运行大模型?Xenova团队推出的Transformer.js,基于JavaScript,让开发者能在浏览器中本地加载和执行预训练模型,无需依赖服务器。该库利用WebAssembly和WebGPU技术,大幅提升性能,尤其适合隐私保护、离线应用和低延迟交互场景。无论是NLP任务还是实时文本生成,Transformer.js都提供了强大支持,成为构建浏览器AI应用的核心工具。
1018 1
深入浅出:Node.js后端开发入门与实践
【10月更文挑战第4天】在这个数字信息爆炸的时代,了解如何构建一个高效、稳定的后端系统对于开发者来说至关重要。本文将引导你步入Node.js的世界,通过浅显易懂的语言和逐步深入的内容组织,让你不仅理解Node.js的基本概念,还能掌握如何使用它来构建一个简单的后端服务。从安装Node.js到实现一个“Hello World”程序,再到处理HTTP请求,文章将带你一步步走进Node.js的大门。无论你是初学者还是有一定经验的开发者,这篇文章都将为你打开一扇通往后端开发新世界的大门。

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等