JS基础05

JavaScript基础05 通常来说,一段程序代码中所用到的名字并不总是有效和可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。作用域的使用提高了程序逻辑的局部性,增强了程序的可靠性,减少了名字冲突。JavaScript(es6前)中的作用域有两种:全局作用域局部作用域(函数作用域) 阅读详情

函数


小概

学习内容:函数的介绍,函数参数,函数返回值,变量作用域,逻辑运算符短路运算,arguments关键字的了解,自调用函数(立即执行函数),回调函数。


1. 函数的介绍

  • 函数作用 :存储代码,解决代码复用

函数语法 :
1 声明函数 : 代码存入函数中 (声明函数只是存储过程,不会执行函数体)
function 函数名() {
函数体代码
};
2 调用函数 : 执行函数体中代码
函数名();

//1.声明函数 : 声明函数只是把代码存入函数中,并不会执行函数体代码
function fn(){
    console.log("1. 代码写久了,肩颈开始酸痛了");
    console.log("2. 我要去中医馆保养身体");
    console.log("3. 你好,我是本次服务的1号技师");
    console.log("4. 不知不觉中,两个小时过去了……快乐的时光总是短暂的");
    console.log("5. 您好,本次消费2888元,请喝杯雪碧压压惊");
    console.log("6. 我结束了");
};
console.log('这里又写了300行代码');
//郭少(调用者)
console.log('a少也有保养需求');
//2.调用函数
fn();
        
// console.log("1. 代码写久了,肩颈开始酸痛了");
// console.log("2. 我要去中医馆保养身体");
// console.log("3. 你好,我是本次服务的1号技师");
// console.log("4. 不知不觉中,两个小时过去了……快乐的时光总是短暂的");
// console.log("5. 您好,本次消费1888元,请喝杯雪碧压压惊");
// console.log("6. 我结束了");
console.log('这里又写了500行代码');
//吴少(调用者)
console.log('b少也有保养需求');
//2.调用函数
fn();
  • 函数与循环的区别
    1.本质不同
    函数是一种数据类型 : 内存中存储代码
    循环是一种语句 : 执行某种功能
    2.功能不同
    函数是 : 一段代码在多个地方执行一次
    循环是: 一段代码在一个地方执行多次

2. 函数参数

传参介绍

函数参数
1 作用:‘调用者’ 传递数据给 ‘函数’
2 语法
传递数据 : 调用者
* 函数名(实参);
接收数据 : 函数
* function 函数名(形参){ 函数体代码 };
3 函数传参本质 : 实参给形参赋值
4 注意点: 实参和形参顺序可以不一致
(1)实参和形参赋值是按照一一对应赋值的
(2)每一个调用者传参是独立的互不干扰,如果没有传,此时默认实参就是undefined

函数传参联系

代码如下(示例):

//1.写一个函数: 求任意半径圆的面积
function getArea(r){
    let area = Math.PI * Math.pow(r, 2);
    console.log(area);
};
//调用
getArea(5);
getArea(10);
//2.写一个函数:求1-任意数字的累加和    
function getSum(num){
    let sum = 0;
    for(let i = 1;i <= num;i++){
        sum += i;
    };
    console.log(sum); 
};
//调用
getSum(10);
getSum(100);
//3.写一个函数,求任意数组最大值
function getMax(arr){
    let max = -Infinity;
    for(let i = 0;i<arr.length;i++){
        if(arr[i]>max){
            max=arr[i];
        };
    };
    console.log(max);
};
getMax([20,60,88,50]);
getMax([20,60,98,70]);

3.函数的返回值(return)

函数返回值
1 作用:‘函数’ 传递数据给 ‘调用者’
2 语法:
传递数据: 函数
* function 函数名(形参){ 函数体代码; return 返回值;}
接收数据 : 调用者
* let 变量名 = 函数名()
3 注意点:
(1)如果函数没有return,则默认返回值是undefined
(2)如果函数有return,但是return后面没有值,此时默认返回值也是undefined
(3)return可以结束整个函数体。 (类似于循环中的break,只是break用于结束循环,return用于结束函数)

//1.声明函数
function getSum(num){
    let sum = 0;
    for(let i = 1;i <= num;i++){
        sum += i;
    };
    return 1;   
    return 2;//不执行,遇到return函数已经结束
};
//2.调用函数 
/* 每一个调用者可能对函数的运算结果处理方式不同 
(1)在函数外部是无法获取函数内部结果
(2)要想获取函数内部结果,则需要使用函数返回值语法
*/
//调用者A
let res1 = getSum(10);//把返回值存入变量 ,接下来对变量进行操作
console.log( res1 );
        
// document.write(`<span>${sum}</span>`);//报错
//调用者B
console.log( getSum(100) );//直接打印返回值

3.1函数的另外一种声明方式

js中函数有两种声明方式
// 具名函数
函数声明: function 函数名(){}
// 匿名函数
表达式声明: let 函数名 = function(){}

//1.函数声明 :  function 函数名(){  函数体代码 }
//具名函数:有名字的函数  function 函数名(){}
function fn(){
    console.log(1111);
};
fn();
let a = fn;//函数本质是一个变量(存储的是代码),也可以拷贝赋值
a();
//2.表达式声明
//匿名函数:没有名字的函数   function(){}
let fn1 = function(){
    console.log(22222);
};

4. 变量作用域

1.变量作用域 : 变量可以起作用(取值/赋值)的范围
全局作用域(全局变量) :函数外面声明变量, 页面任何地方都可以使用
局部作用域(局部变量) :函数里面声明变量,只能在函数内部使用
2.作用域链 : 默认情况下,代码是全局作用域(0级链),当我们声明一个函数之后,这个函数内部形成一个局部作用域(1级),在函数内部又声明函数一个函数,此时就会形成一个新的局部作用域(2级链),以此类推,这种拉链结构称之为作用域链。
变量访问作用域链规则 : 就近原则
当在某一个作用域访访问变量的时候,会先看这个作用域有没有声明,如果有则访问。如果没有则访问上级作用域,如果上级没有,则继续往上找,一直找到作用域最顶端0级还没有找到,此时就会报错 xxx is not defined

//全局作用域 : 全局变量
let num = 10;
function fn(){//只有函数内部声明的才是局部的,函数本身还是全局的
    //全局
    num = 20;
    console.log('函数内' + num);
    //局部
    let num1 = 50;
    console.log( num1 );
    
};
fn();
console.log( '函数外' + num );
// console.log( num1 );
        //全局作用域(0级链)
        let num  = 10;
        function fn(){//函数本身还是0级
            //1级
            let num = 20;
            console.log('1级' +  num );//20
            
            function fn1(){//1级
                //2级链
                // let num = 30;
                console.log( '2级' + num );//30
            };
            fn1();
        };
        fn();
        //0级链
        console.log( '0级' + num );//10

下级作用域(2级)可以对上级作用域(0级,1级)的变量进行赋值等操作,但是上级作用域(0级,1级)不能操作下级作用域(2级)的变量。

5. 扩展

5.1 逻辑运算符短路运算

1.逻辑运算符
&& 逻辑与 : 一假则假
|| 逻辑或 : 一真则真
! 逻辑非 : 取反 true变false,false变成true
2.逻辑运算符短路运算 :如果左边的式子就可以决定逻辑表达式结果,则右边的式子不执行。(为了提高代码解析效率)
3.逻辑运算符短路规则
逻辑与: 找假,左边式子可以转成false,则无条件返回左边式子的值。反正无条件返回右边式子的值。
逻辑或:找真,左边式子可以转成true,则无条件返回左边式子的值。反正无条件返回右边式子的值。

  • 短路运算应用场景:函数默认参数
// let num = 10;
// let res = num > 20 && num++;
// console.log( res );//false
// console.log( num );//10
/* 逻辑表达式的结果不一定是布尔类型,也可以是其他的值
// let res = 10 && 20;
// console.log( res );//20
//1.逻辑与口诀 : 一假则假
//短路规则 :找假: 如果左边式子可以转成false,则无条
let res = 1 && undefined;
console.log( res );
//2.逻辑或口诀 : 一真则真
//短路规则 : 找真 : 如果左边式子可以转成true,则无条
let res1 = 1 || undefined;
console.log( res1 );
//3.逻辑非 : 没有短路运算
//原因: 逻辑非只有一个式子
//小测试
let res2 = 10 && undefined && null && 0;
console.log( res2 );//undefined
let res3 = '' || 1 || 10 || undefined || null || 0;
console.log( res3 );//10
        
        
/* 短路运算场景:函数默认参数 */
function add(a,b){
    /* a默认值是10,b默认值是20 */
    a =  a || 10;
    b = b || 20;
    console.log(a,b);
    console.log(a + b );   
};
add();//undefined,undefined
add(15);//15,undefined
add(25,35);//25,35

5.2 arguments关键字

1.arguments作用: 获取函数所有的实参
2.arguments是一个伪数组(只有数组三要素:元素,下标,长度。 不能使用数组其他方法)
3.场景: 可以让函数 根据参数数量不同而实现不同的功能

        function fn(a,b){
            console.log(a,b);
            console.log( arguments );

            if(arguments.length == 1){
                console.log('功能1');
            }else if( arguments.length == 2){
                console.log('功能2');
            }else{
                console.log('功能3');
            };            
        };
        //js中函数的实参和形参 数量可以不一致

        fn(10);//a = 10,b = undefined
        fn(10,20);//a = 10,b=20
        fn(10,20,30);//a = 10,b=20

6.自调用函数&&回调函数

6.1 自调用函数(立即执行函数)

1.自调用函数 : 函数自己来调用自己
* 一般用于 匿名函数自调用
2.语法: (function(){})();

        (function(){
            //局部作用域
            let num = 10;
            console.log(num);    
        })();// 函数会立刻执行  
        
 /* 自调用语法其实 具名函数也可以使用,只是一般用于匿名函数自调用
        函数调用其实有两种语法
            函数调用 : 函数名()
            自调用 :    (function(){})()
        */
        (function fn(){
            console.log(6666);
        })();

6.2 回调函数

回调函数 :如果一个函数的参数也是函数,则这个参数函数称之为回调函数

        function fn(a){
            console.log(a);
            a();//调用回调函数
        };

        fn(function(){
            console.log(666);
        });

        // function fn(){
        //     console.log(1111);
        // };

        // console.log( fn );//变量取值,打印fn中存储的代码
        // console.log( fn() );//执行fn,打印返回值

        // let a = fn;//变量赋值   fn中存储的数据拷贝一份给变量a
        // let b = fn();//调用fn,把fn的返回值存入b

总结

书犹药也,善读之可以医愚
加油,一起进步!

Xshell 连接 VMware虚拟机操作 截图和使用 vmwareVMware总部位于美国加州帕洛阿尔托(Palo Alto),是全球云基础架构和移动商务解决方案厂商,提供基于VMware的解决方案,企业通过数据中心改造和公有云整合业务,借助企业安全转型维系客户信任,实现任意云端和设备上运行、管理、连接及保护任意应用Xshell(安全终端模拟软件)Xshell [1]是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议。 阅读详情

相关推荐

RLHF的数学表示

RLHF(Reinforcement Learning with Human Feedback)是一种结合了强化学习和人类反馈的机器学习方法。它通常用于训练智能体(agent)在复杂环境中做出决策,同时利用人类的反馈来指导和改进学习过程。RLHF 没有一个统一的数学表示式,因为它依赖于具体的应用场景和实现细节。然而,我们可以从强化学习和人类反馈的角度来描述RLHF的一些关键数学概念。

xw555666的博客 689

js回调函数

回调函数里面带有返回的返回值err和success简单实现思路 function division(num1,num2,func){ if(num1==0){ func({ message:"被除数不能为0" },null); }else{ func(null,num1 / num2); } } division(0,5,function(err,success){ if(err){ console.log(err); }else{ console.log(succ

老舍 7266

【Python学习日记:PySide6】【持续更新】

说明:PySide6 是 Qt for Python 的一部分,是一个 Python 绑定库,可以用来创建跨平台的 GUI 应用程序。它将 Qt 框架的丰富功能带到了 Python 环境中,允许开发者使用 Python 编写 GUI 应用程序。

XLQ的博客 8045

javaScript基础

JavaScript的作用 HTML: 解决页面的结构 CSS:样式 JS:交互,让页面可以具有动作。后期的js可以实现动态页面的效果 JavaScript是什么 语言:用于交流的-所有的语言都有固定的语法和单词,固定语法是一定要遵守的 脚本:戏剧剧本,只要按照流程一步一步走,...

chenting3375的博客 394

当windows安装git时出现以下错误提示

Windows安装Git时出现多个系统配置设置失败错误(exit code 4294967295),提示包括无法设置textconv、LFS过滤器和SSL等配置项。关键问题在于scalar.exe版本不兼容,系统提示"该版本的scalar.exe与你运行的Windows版本不兼容"。解决方案是检查程序版本是否正确,下载与Windows系统兼容的正确版本重新安装即可。

沧澜的博客 1875

【数字IC设计】Centos 7桌面版 安装Synopsys EDA Tools

简称DC,是Synopsys公司用于做电路综合的核心工具,可以将HDL描述的电路转换为基于工艺库的门级网表。

qiumingT的博客 9805

【JavaScript】js基础第05天笔记

1 - 作用域 1.1 作用域概述 1.2 全局作用域 1.3 局部作用域 1.4 JS没有块级作用域 2 - 变量的作用域 2.1 全局变量 2.2 局部变量 3 - 作用域链 4 - 预解析 4.2 变量预解析 4.3 函数预解析 4.4 函数表达式声明函数问题 5 - 对象 5.1 对象概述 5.1.1 什么是对象? 5.1.2 为什么需要对象?5.2 创建对象的三种方式 5.2.1 利用字面量创建对象 5.2.2 对象的使用利用 new Object 创建对象 利用构造函数创建对象遍历对象

一个前端开发者 525

【验证技能树】UVM 源码解读01 -- UVM本质上就是软件工程方法论在芯片验证领域的应用

文章摘要: UVM(通用验证方法学)是基于SystemVerilog的芯片验证框架,采用组件化、面向对象和事务级抽象设计。其核心在于职责分离与数据流,通过Driver、Monitor、Sequencer等模块协作实现高效验证。UVM强调复用性、可扩展性和可维护性,类似软件工程的模块化与低耦合原则。理解其体系结构比记忆API更重要,有助于灵活组合组件并提升验证效率。UVM不仅是工具,更融合了软件工程思维,推动验证工作向自动化、系统化发展。掌握UVM底层逻辑能优化验证环境设计,适用于从IP到SoC的多层级验证场

qq_45869788的博客 1041

JavaScript基础第05天笔记

JavaScript基础第05天笔记 1 - 作用域 1.1 作用域概述 通常来说,一段程序代码中所用到的名字并不总是有效和可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。作用域的使用提高了程序逻辑的局部性,增强了程序的可靠性,减少了名字冲突。 JavaScript(es6前)中的作用域有两种: 全局作用域 局部作用域(函数作用域) 1.2 全局作用域 作用于所有代码执行的环...

function_road的博客 508

Steam游戏服务器攻防全景解读——如何构建游戏级抗DDoS防御体系?

当检测到TCP/UDP混合攻击时,应触发预设的熔断策略:优先保障游戏大厅服务的UDP 27015端口,临时限制匹配系统的TCP连接数。针对Steam游戏服务器特有的UDP 4380端口,需配置协议合规性检查规则:限制数据包长度不超过128字节,强制校验请求来源IP的真实性。Steam游戏服务器的防护需要平衡安全性与玩家体验,通过协议深度解析、智能流量调度和服务端加固的三维防御体系,可构建游戏行业专属的抗DDoS护城河。答:采用弹性防护方案,基础防护带宽保持50Gbps,遭遇攻击时自动扩展至T级清洗能力。

2501_91486804的博客 1455

S32K1XX Autosar开发实战|全网独家复现EB MCAL Port/Dio配置、详解引脚分层原理、实现经典跑马灯助力车载IO电控落地

在NXP S32K1XX系列车规MCU的AUTOSAR标准开发体系中,MCAL(微控制器抽象层)是软硬件解耦的核心载体,而Port端口模块与Dio数字IO模块是MCAL最基础、最核心的入门模块,也是车载指示灯、按键检测、继电器驱动、外设硬件启停控制的底层支撑。区别于传统裸机直接操作寄存器的开发方式,AUTOSAR架构采用分层隔离设计,Port负责硬件静态初始化、Dio负责动态电平操控,严格遵循车规级开发规范,杜绝硬件资源冲突、引脚配置混乱等问题。

getusushu的博客 44

JavaScript基础第05天笔记带你玩转js

JavaScript基础第05天笔记 1 - 作用域 1.1 作用域概述 ​ 通常来说,一段程序代码中所用到的名字并不总是有效和可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。作用域的使用提高了程序逻辑的局部性,增强了程序的可靠性,减少了名字冲突。 JavaScript(es6前)中的作用域有两种: 全局作用域 局部作用域(函数作用域) 1.2 全局作用域 作用于所有代码执行...

weixin_46002223的博客 273

51智能小车(双轮)

前几天接了个小单子,是一个基于51单品机的作品,发现自己对小车的认识还是不太🆗。也算是完成了任了的;欢迎各位小伙伴来多多交流,大家一起进步。最后有需要单片机课程设计的小伙伴滴滴我哦(有偿)。企鹅:2397746994。

qq_56992543的博客 2348

JS基础知识整理05- JavaScript对象

JavaScript对象: JS对象是一种特殊的数据,拥有属性和方法 以键值对的形式储存 定义对象如下: var person = { firstName: "Bill", lastName : "Gates", id : 678, fullName : function() { return this.firstName + " " + this.lastName;...

weixin_44586318的博客 206

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

JavaScript核心基础05

文章目录jQuery简介1. 介绍2. 使用1)引入2)工厂函数 - $()3)原生JavaScript对象与jQuery对象4)jQuery获取元素5)操作元素内容6)操作标签属性7)操作标签样式8)元素的创建,添加,删除9)动画效果10)数据与对象遍历11)jQuery事件处理3.实战1. 页面效果2. 代码分析1. 页面元素2. 初始代码3. 绑定省份4. 绑定城市 jQuery简介 1. 介绍 jQuery是JavaScript的工具库,对原生JavaScript中的DOM操作、事件处理、包括数据处

qq_41302958的博客 358

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

JS基础笔记05

JS基础笔记05 代码访问变量时,会从离得最近的作用域里面查找,若找不到,再从上一级作用域里面进行查找。 作用域链只会由下往上找。 在函数中未声明变量直接使用一个新的变量,那么引擎会认为是全局变量。 以上具体阐述在JS进阶中会详细阐述 匿名函数: (function(userAge){ console.log('userAge'); })(23); **sort 排序...

小小鹏的小小博客 186

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

05-javascript基础----js作用域

一、作用域 1. 概念 & 作用 作用域,就是一个代码块所在的区域,它是静态的,在编写代码时就已经确定了 不同于执行上下文,(执行上下文是动态的,执行创建) 举例: 执行上下文时 建房子 时的 打地基 作用域 是 建房子 时的 区域 作用:用来决定代码执行的范围,变量所属的范围 2. 作用域和执行上下文区别 作用域 执行上下文 创建时刻 函数定义function a() {} 函数调用a() 性质 静态的,函数定义了,就不会变化 动态的 存在时间 不会变化 调用时创建,

pig_is_duck的博客 179

05-JavaScript基础一

目录 1.JavaScript 2.JavaScript基础使用 3.JavaScript基础语法 (1)语法 (2)注释 (3)标识符和关键字 (4)变量 (5)数据类型 (6)数据类型转换 1.JavaScript 一种具有面向对象能力的、解释型的程序设计语言。更具体一点, 是基于对象和事件驱动并具有相对安全性的客户端脚本语言。 主要目的: 验证发往服务器端的数据、增加Web互动、加强用户体验度等。 组成: ECMAScript(基础语...

W_000的博客 268

js基础05

文章目录数组的方法pushunshiftpopshiftsplice(i,n,m)`删除数组最后一项的方法``在数组最后增加项的方法`slice(n,m)concattoStringjoinreversesortindexOflastIndexOfincludesforEachmap数组去重冒泡排序快速排序递归求和 数组的方法 push 作用:向数组 参数:添加具体的值,可以是一项也可以是多项 返回值:新数组的长度 是否改变原数组:改变 var ary=[2,3]; console.lo

cuishoulong3424的博客 235

JavaScript基础入门05

目录 JavaScript 基础入门05 严格模式 严格模式的设计目的 如何开启使用严格模式 显式报错 字符串 字符串的创建 字符串实例方法之常用API ...

276

JavaWeb 05_JavaScript基础

JavaScript课程体系 —、JavaScript概述 1、什么是JavaScript 2、为什么要使用Javascript3、JavaScript运行环境 4、编写Javascript的语法结构5、变量定义与赋值 6、JavaScript数据类型 7、JavaScript中的基本类型转换8、JavaScript运算符有哪些9、函数定义与应用 10、JavaScript的注释二、Js循环语句 1、Javascript中的对象2、内置核心分类对象 三、掌握JavaScript中的数组对象 1、构造方法 2

weixin_64646820的博客 1220

【javaScript基础05】

函数调用问题: 例: function printNum( ){ console.log(1) } printNum(); ------>只是调用函数; console.log(printNum( )); ----------> 1.调用...

San_Diego的博客 650

前端05 /js基础

前端05 /js基础 昨日内容回顾 css选择器的优先级 行内(1000) > id(100) > 类(10) > 标签(1) > 继承(0) 颜色 rgb(255,255,255) #000000-#FFFFFF 单词表示 rgba(255,255,255,0.5)(透明度) 字体 font-family 设置"微软雅黑","宋体" font...

weixin_30847939的博客 213
上一篇: JS基础04
下一篇: JS基础06
Ordbiao
博客等级 码龄7年 15粉丝 47原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值