JavaScript-2(运算符+流程控制+数组+函数+作用域)

目录

1.运算符

比较运算符

浮点数的精度问题

递增或递减运算符

前置递增运算符

后置递增运算符

比较运算符

逻辑运算符

短路运算(逻辑中断)

赋值运算符

运算符优先级

2.流程控制

顺序结构

分支结构

if语句

switch语句

二者区别

三元表达式

循环结构

for循环

双重for循环

while循环

do-while循环

continue关键字

break关键字

3.数组

数组的概念

数组的创建

获取数组的元素

遍历数组

新增数组元素

通过修改length长度新增数组元素

通过修改数组索引新增数组元素

筛选数组方法(把一个数组中的元素放到另一个数组中)

4.函数

函数的声明和调用

形参和实参

形参和实参的个数相匹配问题

函数的返回值return

函数可以相互调用

输出2月天数案例

函数的第二种调用方法

5.作用域

JavaScript作用域

全局变量和局部变量

全局变量 

局部变量

作用域链


1.运算符

比较运算符

浮点数的精度问题

浮点数值的最高精度是17位小数,但在进行算术计算时其精确度远远不如整数

不能直接判断两个浮点数是否相等

递增或递减运算符

递增和递减运算符必须和变量搭配使用

想要反复给数字变量添加或者减去1,可以使用++或--

前置递增运算符

++写在前面,先自加,后返回值

后置递增运算符

++写在后面,先返回值,后自加

比较运算符

===和!==  全等和不全等要求数值和数据类型一致

== 和 !==   只根据数值是否一致来判断   ==会把字符串转换为数字型

逻辑运算符

短路运算(逻辑中断)

当有多个表达式(值)时,左边的表达式可以确定结果时,就不再继续运算右边的表达式的值

逻辑与&&    如果第一个表达式的值为真,则返回表达式2;第一个表达式值为假,则返回表达式1对于布尔值为假的一些值如0,' ',null、undefined 、NaN等,它们放在第一个表达式的位置就不用再运算后面的表达式了,返回结果就是表达式1

逻辑或||   如果第一个表达式的值为真,返回表达式1;第一个表达式为假,返回表达式2;

var a=0;        

console.log(123 || a++);

console.log(a)                     

这个结果还是0,因为是逻辑或,第一个表达式是正确的,直接输出第一个表达式,后面的不再运行,a++没有执行              

赋值运算符

运算符优先级

一元运算符里面的逻辑非!优先级很高

逻辑与比逻辑或优先级高

2.流程控制

顺序结构

没有特定的结构,就是一行一行执行

分支结构

if语句

if(条件表达式){

        //条件成立执行的代码语句

}

switch语句

switch语句也是多分支语句,它用于基于不同的条件来执行不同的代码。当要针对变量设置一系列的特定值的选项时,就可以使用switch

switch进行判断,必须是值和数据类型都相同,才能break;如果某个case没有加case,及时在该处停止时正确的,程序也会继续向下运行,输出下一个case的结果

switch (表达式) {

        case value1:    

                表达式

                break;

        case value2:

                表达式

                break;

        default:

                表达式

}

二者区别

三元表达式

有三元运算符组成的式子称为三元表达式

语法结构: 条件表达式 ?表达式1:表达式2

执行思路:如果条件表达式结果为真,则返回表达式1的值;如果条件表达式结果为假,则返回表达式2的值

也可以用if条件句来实现,相当于是if条件句的简易版写法

循环结构

for循环

for (初始变量;条件表达式;操作表达式){

        循环体

}

for循环可以执行相同的内容

for循环可以执行不同的内容

双重for循环

while循环

while(条件表达式){

        循环体

}

里面也有计数器,进行计算

do-while循环

先执行一遍循环体,再去判断条件表达式是否正确,所以它至少会执行一次

continue关键字

continue关键字用于立即跳出本次循环,继续下一次循环

在吃到第三个包子有问题时,输出的结果是还会是在吃包子,只不过没有”我在吃第三个包子“

break关键字

直接跳出整个循环

在吃到第三个包子不吃时,输出的结果到”我在吃第二个包子“

3.数组

数组的概念

数组的创建

可以用new方法新建一个数组;也可以用数组字面量来创建(即后面加上一个[]),在中括号中可以进行赋值说明

获取数组的元素

利用数组的索引   数组名[索引]

遍历数组

利用for循环和数组长度length即可做到

新增数组元素

通过修改length长度新增数组元素

只增加了length值,但是新添加的位置处的值为空

通过修改数组索引新增数组元素

直接新增如arr[10]=9999,但是不能直接给数组名赋值,这样会覆盖掉以前的数据

新建一个数组,里面放10个整数,通过for循环来实现

筛选数组方法(把一个数组中的元素放到另一个数组中)

第一种方法是设置新数组的索引为0,每在新数组中放置一个元素,索引就加1;第二种方法是利用新数组的长度为0,直接length来放置新的元素

冒泡排序

4.函数

函数的声明和调用

函数的使用方便后续代码重复使用,只需要调用函数就行了

function 函数名(){

        函数体代码

}

function是声明函数的关键字,必须小写;通常把函数名命名为动词

调用函数:函数名();

只有调用函数,函数才会执行

形参和实参

在声明函数时,在函数后面的小括号内添加一些参数,这些参数成为形参;在调用该函数时,在函数后小括号内写的具体参数,成为实参

参数的作用:在函数内部的某些值不能固定后,可以通过参数在调用函数时传递不同的值进去

形参和实参的个数相匹配问题

形参的初始值定义为undefined

实参个数等于形参个数,输出正常结果

实参个数大于形参个数,只取到形参的个数

实参个数小于形参个数,多的形参定义为undefined,一个数加上undefined结果为NaN

函数的返回值return

function 函数名(){

        return 需要返回的结果

}

函数名()

console.log(函数名())

return后在函数执行体外仍需再调用函数,并赋值

return下面一行的代码是不会被执行的;renturn只能返回一个值,返回最后一个值;任意球两个数的加减乘除结果,在return时把它们放到一个数组中,这样可以全部输出

如果没有写return,那么调用时输出结果是undefined

函数可以相互调用

每个函数都是独立的代码块,一个函数可以调用另一个函数

输出2月天数案例

先定义一个backday方法用来返回2月天数的值,在其调用isRunYear的方法,既判断是否为闰年后再输出结果,调用的时候直接在if的小括号中写,记得调用方法是要写小括号,调用方法时该方法返回的值为true时才执行第一个alert

函数的第二种调用方法

var 变量名= function(函数名){};

变量名(内容)

函数表达式声明方式和声明变量差不多,只不过变量里面存的是值,二函数表达式里面存放的时函数;函数表达式也可以传递参数

注意它设置了一个变量名,最后时以变量名佳小括号,括号中可以添加内容来调用的,同时需要在函数体中console.log(函数名)

5.作用域

JavaScript作用域

代码名字(变量)在某个范围内起作用和效果,目的是为了提高程序的可靠性,更重要的是减少命名冲突

全局作用域:放在整个script标签中或者是一个单独的js文件

局部作用域:放在函数内部,这个代码只在函数内部起作用

当相同的变量分别放置在全局作用域和局部作用域时,两次调用输出结果不同;如果在一个作用域内两次赋值同一变量,输出的结果是最后一个

全局变量和局部变量

全局变量 

  • 全局变量在代码的任何位置都可以使用
  • 在全局作用域下var声明的变量是全局变量
  • 特殊情况下,在函数内不实用var声明的变量也是全局变量

局部变量

在局部作用域下声明的变量成为局部变量(函数内部定义的变量)

  • 布局变量只能在该函数内部使用
  • 在函数内部用var声明的变量是局部变量
  • 函数的形参实际上是局部变量

全局变量:在任何地方都可以使用,比较占内存

局部变量:只在函数内部使用,在代码执行时被执行,会被初始化;当代码运行结束后,就会被销毁,更节省空间

作用域链

函数中还有函数,仍可以在这个作用域中只在诞生一个作用域

根据在函数内部可以访问外部函数变量的这种机制,用链式查找决定哪些数据能被内部函数访问,就成作为作用域链

如下图,在函数中还可以再写函数,还可以再写作用域;在内部函数调用的变量上级函数和全局作用域中都有时,根据就近原则来调用数值

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

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

相关文章

IOTE2024第二十一届(上海)国际物联网展览会4月24日-26日开幕

交流产业信息,把脉发展方向,IOTE 国际物联网展是每年物联网行业、企业、用户交流合作的大型平台。2024年4月24-26日IOTE2024第二十一届国际物联网展•上海站,在上海世博展览馆开展。 本次物联网展汇聚全球超300家参展企业、3万来自工业、物流…

【讯为Linux驱动笔记1】申请一个字符设备

Linux下每个设备都需要有一个专属设备号:主设备号 次设备号 【申请字符设备】 主设备号:一类驱动:如:USB驱动 次设备号:这类驱动下的某个设备 如:键盘鼠标 设备号是32位的dev_t类型的,高12位主…

酒店大厅装智能酒精壁炉前和装后对比

安装智能酒精壁炉前后,酒店大厅的氛围和效果会有显著的对比: 装前: 普通装饰: 大厅可能显得比较普通,缺乏独特的装饰和氛围元素。 空间感较弱: 大厅可能缺乏焦点和吸引力,客人进入后感觉空间…

C# 生成图形验证码

目录 应用场景 开发运行环境 设计 生成内容 生成图片 实现 核心代码 调用示例 小结 应用场景 我们当用户登录系统时经常会用到图形验证码技术,要求用户识别图片中的内容,并正确输入,方可尝试登录。类似的场景还有用户注册或者涉及…

65.网络游戏逆向分析与漏洞攻防-利用数据包构建角色信息-根据解析好的角色数据还原对应数据结构

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 如果看不懂、不知道现在做的什么,那就跟着做完看效果,代码看不懂是正常的,只要会抄就行,抄着抄着就能懂了 内容…

Java对象不再使用时,为什么要赋值为 null

相信大家在面试Java开发的时候,会遇到比较多的问题是Java的内存管理,这里面涉及到Java垃圾回收机制,以及JVM调优等等,那么今天跟大家讨论一个问题:Java对象不再使用时,为什么要赋值为 null ? 1、Java内存管理 在Java中,对象是在堆内存中分配的。 这部分内存用于存储…

YES-100B数显压力试验机

一、简介 本机采用主机与液压系统集于一体的结构形式,结构紧凑,小巧玲珑。采用液压加荷、电子测力,具有加荷数率显示,峰值保持等功能,并配有微型打印机。本机适用于水泥抗压、建筑砂浆抗压试验,也可用于混…

Jammy@Jetson Orin - Tensorflow Keras Get Started: 000 setup for tutorial

JammyJetson Orin - Tensorflow & Keras Get Started: 000 setup for tutorial 1. 源由2. 搭建环境2.1 安装IDE环境2.2 安装numpy2.3 安装keras2.4 安装JAX2.5 安装tensorflow2.6 安装PyTorch2.7 安装nbdiff 3. 测试DEMO3.1 numpy版本兼容问题3.2 karas API - model.compil…

YOLOV5 TensorRT部署 BatchedNMS(engine模型推理)(下)

主要是在王新宇代码的基础上改进,引入对BatchedNMS的解码 文章目录 1. 修改yolov5.cpp2.修改yololayer.h1. 修改yolov5.cpp 首先增加全局变量,名字根据转onnx时修改的节点名字来,查看onnx文件可以看到,顺序不要弄错。 const char *INPUT_NAME = “images”; const char …

在Git中如何查看工作目录与暂存区的差异?

文章目录 在Git中查看工作目录与暂存区的差异查看工作目录与暂存区差异的命令示例代码及说明: 在Git中查看工作目录与暂存区的差异 当你在使用Git进行版本控制时,经常需要了解工作目录(Working Directory)中的文件与暂存区&#…

【Linux系统编程】基础指令(二)

💞💞 前言 hello hello~ ,这里是大耳朵土土垚~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 💥个人主页&#x…

1分钟掌握 Python 函数参数

任何编程语言函数都是非常重要的一部分,而在进行函数调用时,了解函数的参数传递方式是非常有必要的。Python中支持哪些传参方式呢? Python中的传参方式是比较灵活的,主要包括以下六种: 按照位置传参按照关键字传参默…