9.函数,变量作用域(全局作用域和局部作用域),匿名函数,立即执行函数,逻辑中断,常见值布尔判断

函数

其实学习函数学习的不仅仅是在js中如何声明一个函数如何给函数传参如何引用和调用函数,函数在整个编程领域都是一种思想—抽取和封装的思想

那么啥是抽取和封装的思想呢?--------------------------------------------

抽取

抽取就是比如拿厨房举例子,我们在厨房中如果餐具的摆放位置是不固定的,乱七八糟,毫无疑问,孩子得饿死,那么如果我们把餐具分类筷子放在一起,刀具放在一起,碗和盘子放在一起,我们进入厨房一目了然这就是把一部分相似的逻辑抽出来,这样的代码更加方便阅读,请注意一点,你的代码永远是写给人看的,而不是写给计算机看的(有经验的程序员会故意把代码写的很复杂,这样来增加自己的不可替代性,哈哈)

封装

封装我举个例子就是我们开始炒鸡蛋,我们的女朋友每次都想要心形的鸡蛋饼,你不能每次拿铲刀自己做一个心形把,那不是非常难看?这个时候你去网络上买一个模具,每次都用这个模具,这就相当于把找心形这个操作封装了起来,每次使用模具 就ok了,至于这个模具是怎么制作的,你完全不需要关系,放在编程界就是这样,把一些复杂的逻辑,重复的逻辑封装起来,到处使用,这样可以减少工作量,增加工作效率

缺点

切记,抽取和封装是一把双刃剑,一定要使用的恰到好处,如果过渡封装,把一些业务性特别强的代码封装到函数里,那么随着项目的开展,这个函数的业务代码会越来越大,最后维护成本是不可预估的。

函数使用

在这里插入图片描述

直接上代码吧,主要了解的就是函数声明,参数的声明和return还有默认函数

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8" /><title>函数</title>
</head>
<body><script>// 声明一个函数 求两个数字的和 函数传参在括号里面,用逗号隔开 c=3意思就是默认值为3// 函数的参数可以有默认值,也可以没有function add(a,b,c=3){return a+b+c  // 函数返回值  注意return后面的代码不会被执行,会立刻结束函数 如果函数不写return,默认返回值为undefined}// 调用函数(可以多次调用,每次调用都会执行函数体里面的代码)console.log(add(1,2))  // 括号里面的值相当于是吧函数里的参数赋值 a=1 b=2console.log(add(1,2))</script>
</body>
</html>

变量作用域

和其他的编程语言一样,在JavaScript语言中你声明的变量不是在所有的地方都可以使用,而是有一定的范围
在给黑马的pink老师做一个广告
在这里插入图片描述

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8" /><title>作用域</title>
</head>
<body><script>// 变量作用域// 1.全局作用域  全局作用域中的变量可以被任何地方访问let a = 1  // 全局作用域中的变量可以被任何地方访问,可以在script标签内的代码访问,还有一种就是外部定义一个.js的文件引用,在引用的文件中可以访问// 2.局部作用域  局部作用域中的变量只能被所在的作用域内的代码访问也叫函数作用域function f1(){let b = 2  // 局部作用域中的变量只能被所在函数内的代码访问console.log(b)}// 下面这两个先往后放// 3.函数作用域  函数的作用域中的变量只能被所在函数内的代码访问// 4.块作用域  块作用域中的变量只能被所在块内的代码访问</script>
</body>
</html>

匿名函数和立即执行函数

在这里插入图片描述

就是一个小函数,没啥了不起的,了解一下写法就行,但是立即执行函数是非常常用的一定要掌握虽然很简单

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8" /><title>函数表达式</title>
</head>
<body><script>// 函数表达式let f = function(a,b,c){  // 函数表达式  f是一个变量,这个变量的值是一个函数,这个函数的参数是a,b,creturn a+b+c}console.log(f(1,2,3))  // 调用直接就是变量名()就行//立即执行函数let f2 = (function(a,b,c){  // 立即执行函数return a+b+c})(1,2,3)</script>
</body>
</html>

逻辑中断(逻辑短路)

其实逻辑中断也叫逻辑短路,就是比方说我的或操作是一个假的就是假的那这个时候如果我上来就发现了一个假的那我后面的代码就没必要执行了在开发中常用给一个值赋值如果说一个值没有值那就给他一个默认值,类似函数的默认值那种意思只不过现在是变量的默认值

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8" /><title>函数表达式</title>
</head>
<body><script>// 逻辑中断// 定义一个函数,结合逻辑与(&&)和逻辑或(||)的短路// 注意如果并且的操作如果两侧都是真的那就范湖最后一个真的值function checkNumber(num) {// 如果num大于0并且是偶数,或者num小于0并且是奇数,则打印对应信息if ((num > 0 && num % 2 === 0) || (num < 0 && num % 2 !== 0)) {console.log(num + " 满足条件");} else {console.log(num + " 不满足条件");}}// 测试函数checkNumber(6); // 输出:"6 满足条件",6 大于0并且是偶数checkNumber(-3); // 输出:"-3 满足条件",-3 小于0并且是奇数checkNumber(5); // 输出:"5 不满足条件",5 既不大于0并且是偶数,也不小于0并且是奇数// 下面是开发当中常用到的给默认值的写法,一定要看得懂哦!x = 1;y = x || 2;console.log(y);  // 输出:1 因为x有值,所以y等于xx = 0;y = x || 2;console.log(y);  // 输出:2 因为x没有值,所以y等于2x = 1;y = x && 2;console.log(y);  // 输出:2 因为x有值,所以y等于2 注意如果两侧都是真那就返回最后一个真的值x = 0;y = x && 2;console.log(y);  // 输出:0 因为x没有值,所以y等于0</script>
</body>
</html>

常见值布尔判断

列出了一些常见值的布尔判断

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8" /><title>函数表达式</title>
</head>
<body><script>// 测试不同值的布尔判断// false 值console.log(Boolean(false)); // falseconsole.log(Boolean(0)); // falseconsole.log(Boolean(-0)); // falseconsole.log(Boolean(0n)); // falseconsole.log(Boolean("")); // falseconsole.log(Boolean(null)); // falseconsole.log(Boolean(undefined)); // falseconsole.log(Boolean(NaN)); // false// true 值console.log(Boolean(true)); // trueconsole.log(Boolean(1)); // trueconsole.log(Boolean(-1)); // trueconsole.log(Boolean("hello")); // trueconsole.log(Boolean([])); // true (空数组)console.log(Boolean({})); // true (空对象)console.log(Boolean(function() {})); // true (函数)// 使用逻辑运算符检测 true 和 false 值const value = ""; // 尝试修改这个值来测试不同的结果if (value) {console.log(value + " 是 true");} else {console.log(value + " 是 false");}</script>
</body>
</html>

结果
在这里插入图片描述

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

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

相关文章

【MATLAB源码-第149期】基于MATLAB的2ASK,2FSK,2PSK,2DPSK等相干解调仿真,输出各节点波形。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 2ASK&#xff08;二进制幅移键控&#xff09;、2FSK&#xff08;二进制频移键控&#xff09;、2PSK&#xff08;二进制相移键控&#xff09;和2DPSK&#xff08;二进制差分相移键控&#xff09;是数字调制技术中的基本调制方…

1 数据分析概述与职业操守

1、 EDIT数字化模型 E——exploration探索 &#xff08;是什么&#xff09; 业务运行探索&#xff1a;探索关注企业各项业务的运行状态、各项指标是否合规以及各项业务的具体数据情况等。 指标体系——目标&#xff08;O&#xff09;、策略&#xff08;S&#xff09;、指标&a…

网工内推 | 项目经理,软考证书优先,最高26K,加班补贴

01 龙盈智达 招聘岗位&#xff1a;项目经理 职责描述&#xff1a; 1 根据业务员需求&#xff0c;完成生态圈下账簿中心系统的开发管理工作。 2 负责账簿中心实施过程中的需求调研分析、方案设计、开发测试、系统上线等工作的计划、组织协调、沟通等方面管理工作。 3 完成系统核…

将python程序打包为exe格式

1. 安装pyinstaller winr打开命令窗口 输入&#xff1a; pip install pyinstaller输入命令后会自动安装pyinstaller 2. 打包 进入你的代码所在位置&#xff0c;输入cmd 在弹出的窗口中输入 pyinstaller --onefile your_script.pyyour_script.py修改为你需要打包的程序名字 …

select * from 表 c=‘1‘ and b=‘2‘ and a=‘3‘; abc是联合索引,这样查询会命中索引吗?

倒叙也会命中索引 但是要注意&#xff0c;倒叙的时候必须要有a存在&#xff0c;否则就会索引失效 因为mysql底层会有优化器去进行优化&#xff0c;但是如果没有a的话&#xff0c;那么优化器就不知道要优化那个索引了&#xff0c;所以他走了全表&#xff0c;导致索引失效

Unity(第九部)物体类

拿到物体的某些数据 using System.Collections; using System.Collections.Generic; using UnityEngine;public class game : MonoBehaviour {// Start is called before the first frame updatevoid Start(){//拿到当前脚本所挂载的游戏物体//GameObject go this.gameObject;…

基于systick实现获取系统运行时间

基于systick实现获取系统运行时间 文章目录 基于systick实现获取系统运行时间systick.c代码结构:代码功能:总结 systick.c #include <stdint.h> #include "gd32f30x.h"static volatile uint64_t g_sysRunTime 0;/** ***************************************…

GIT 拉取代码报错error:some local refs could not be updated

文章目录 报错信息处理办法在这里插入图片描述小结 报错信息 ![new branch] dev->orgin/dev(unable to update local ref) error:some local refs could not be updated;try running git remote prune orginto remove any old,confilicting branches 处理办法 git gc --pru…

西软云XMS operate XXE漏洞

免责声明&#xff1a;文章来源互联网收集整理&#xff0c;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该…

Mybatis-Plus学习

文章目录 一、简介1. 概述2. 特点3. 框架架构 二、入门案例1. 数据库环境准备2. SpringBoot工程准备3. 配置application.yml4. 项目开发5. MybatisPlus测试 三、BaseMapper1. 源码2. 方法测试 四、IService1. 简介2. 使用IService3. 测试IService 五、MybatisPlus为我们提供的一…

Java玩转《啊哈算法》暴力枚举之炸弹人

当一个人身强力壮、洋溢着青春气息的时候&#xff0c;要做到坚强是比较简单和容易的。只有当生活像铁环一样把你紧紧箍住的时候&#xff0c;能做到坚强才是光荣的。 有目录&#xff0c;不迷路 缘起代码地址炸弹人问题 缘起 各位小伙伴们好呀&#xff01;本人最近看了下《啊哈算…

如何使用Docker部署IT-Tools并结合内网穿透实现公网访问本地工具箱服务

作为程序员&#xff0c;在日常工作中&#xff0c;需要借助一些工具来提高我们工作效率&#xff0c;IT-Tools是为开发人员度身打造的一套便捷在线工具。它提供全面功能&#xff0c;使开发者能以更高效方式完成任务。经由IT-Tools&#xff0c;开发人员能轻松应对各类技术挑战&…