JavaScript基础(十五)

news2025/1/12 16:08:52

变量&返回值

js中的变量有两种: 局部变量全局变量

全局变量:

在函数外声明的变量,网页上的所有函数和脚本都能访问它。

局部变量:

在函数内部声明的变量(必须使用var),只能在函数内部访问它,我们都知道声明全局变量时,变量名是不能重复的,不然变量会被覆盖掉,而局部变量只在某一个区域内生效,所以可在不同的函数中使用名称相同的局部变量

生命周期:

  1.局部变量在函数运行以后被删除

  2.全局变量在页面关闭后被删除

返回值:

  通过return将值返回调用它的地方。

例:

 function fn(a,b){

    return a+b;

  }

  console.log(fn(1,2));

  var num=fn(1,2);

  console.log(num);

005979f01cd843f3a4c65649e6d95708.png

 上面两个调用结果都是一样的的,像第二个一样,你不要直接去使用它,把它赋值给变量,后面方便改动。

下面说个面试题,你调用这个函数有时候函数名后带括号,有时候不带,啥意思?

比如上面这个:

function fn(a,b){

    return a+b;

  }

  console.log(fn(1,2));

  console.log(fn);

看看结果就知道:

228b9577ba8b49499c21d88301bb9d60.png

 console.log(fn(1,2));

//函数名带括号,调用的是函数的返回值。

console.log(fn);

//不带括号,调用的是函数本身。

通俗来说,全局变量和局部变量的区别就是公共汽车和私家车,一个是谁都可以上,一个是只有你允许的才能上。

 var num =100;(全局变量)

  function fn(){

    var a=99;(局部变量)

    console.log(num);

    console.log(a);

  }

  fn();

  console.log(a);

6e5ad2f59f9943ae844bf1bc12555441.png

结果显而易见,局部变量在外面是无法调用的

为什么之前说必须使用var来声明局部变量呢,我们改一下看看:

var num =100;

  function fn(){

    a=99;

    console.log(num);

    console.log(a);

  }

  fn();

  console.log(a);

22eb42ffd1ee4a95b3070cadd6371a2b.png

您看怎么着!如果声明变量的时候,没有var,直接变量名=值,自动提升作用域,自动变成全局变量

那如果,全局变量和局变量声明的变量名一样,在局部变量那它会优先使用哪个变量的值?

 var num =100;

  function fn(){

    var num=99;

    console.log(num);

  }

  fn();

e5556065a00e4933bbf7ac53fc900935.png

内部会把外部的覆盖掉。

用let声明同名的变量会报错,后面讲ES6会详细的说。

既然说到它能提升作用域,这就说明你在函数内声明的变量(不用var),它也会直接把外面的全局变量覆盖掉:

 var num =100;

  function fn(){

    num=99;

    console.log(num);

  }

  fn();

  console.log(num);

e558b247ddbe4b0781b5e418cdb11e97.png

在函数内部声明的变量,只要var了就是个局部变量 ,不var就是个全局变量,变量的取值只能是向上取值。

最后做个练习

练习:增加学员,并展示学员信息。

<body>

   <button οnclick="add(prompt('请输入会员姓名'))">添加会员信息</button> 

   <button οnclick="show()">展示会员信息</button> 

</body>

<script>

  var member=[];

  function add(name){

    if(name==0){

      alert('用户名不能为空');

    }else{

      member.push(name);

      alert('添加成功');

    }

  }

  function show(){

    if(member.length==0){

      document.write('请检查用户名')

    }else{

      for(name of member){

        document.write(name+'<br>');

      }

    }

  }

</script>

8a525871a73f427abf9560385b1f55d0.png

 178304ebe6cb4674af97ce1f290ef8c4.png

 cd1eba83b0e64756ab9b5726b6fbbe74.png

再细说一下返回值吧:

function fn(){

    return '我是fn';

  }

  var str =fn();//调用fn(),得到返回值,同时可以赋值给str

  console.log(str);

b227a8783829491ca581eb88e2bd8b10.png

我们通过三目运算符return一个最大值,两个数比较太简单了,顺便复习一下三个数的三目运算怎么写:

 function big(a,b,c){

    return(a>b?a:b>c?a>b?a:b:c);

  }

  var biggest =big(11,22,33);

  console.log(biggest);

5b2e5f1b374d4882bb29976890d05817.png

很好理解只要把a>b?a:b看成一个数,就是ab之间的最大数,然后和c比较就行了。

我们目光不能太死,不然很多我们学的东西你都会觉得没用,不能只把abc当成数,可以把它们当成条件,满足哪个条件得到返回值后,页面发生对应变化,也可以跳转到别的地方。

 

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

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

相关文章

区分C语言中的全局变量和java中的类的变量

该程序运行结果&#xff1a; 原因&#xff1a; new Homework08().count1();中改变的count的值是该对象的count变量&#xff0c; 但是Homework08 t1 new Homework08(); t1.count2(); t1.count2();改变的都是t1变量的count的值 //20224.07.16public class Homework08 {public …

在组件中显示tuku的照片

一、问题 &#xff08;1&#xff09;错误&#xff1a;域名前面一定要加http://要不然会报错 &#xff08;2&#xff09;在使用 defineModel传值时一定要动态绑定&#xff0c;要不然图片不显示 &#xff08;3&#xff09;改完后在商品列表中显示图片信息必须 在显示的图片中取…

ARM体系结构和接口技术(六)KEY按键实验① 按键轮询检测

文章目录 一、按键轮询&#xff08;一&#xff09;分析按键的电路连接1. 按键原理图2. 按键消抖 二、分析芯片手册&#xff08;一&#xff09; GPIO章节&#xff08;二&#xff09;RCC章节 三、代码&#xff08;一&#xff09;key.c&#xff08;二&#xff09;key.h 一、按键轮…

基于python的笔记本电脑购买意愿影响因素分析,包括情感分析和聚类分析

摘要&#xff1a;本论文基于Python大数据视角&#xff0c;旨在分析笔记本电脑购买意愿的影响因素。通过爬取京东网站上的评论数据&#xff0c;使用多种技术和工具进行数据分析和处理。使用requests库爬取了大量的在线评论数据。利用pandas对数据进行清洗、处理和统计&#xff0…

实况:老菜鸟自力更生从零开始重学spring目标是画出一张唬人大图(三、spring启动的入口搭建源码阅读环境)

前情提要&#xff1a;源码下载&编译 速览 设计一个最简单的spring项目spring的入口在哪&#xff1f;怎么启动的&#xff1f;搭建源码阅读环境新建module并添加依赖编写一个微型spring项目&#xff08;配置bean->获取bean->使用bean&#xff09; 不打无准备之仗&…

windows下使用make编译C/C++程序 gcc编译 MinGW编译器

文章目录 1、概要2、编译环境搭建3、创建工程目录结构4、 编写程序4.1 编写头文件4.2 编写源文件 5、编写makefile及相关文件5.1 编写清理编译生成文件的批处理文件&#xff0c;供makefile调用5.2 编写makefile文件 6、编译工程6.1 打开命令行6.2 使用make命令编译程序6.3 编译…

【数据结构】二叉树———Lesson2

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f4a5;&#x1f4a5;个人主页&#xff1a;奋斗的小羊 &#x1f4a5;&#x1f4a5;所属专栏&#xff1a;C语言 &#x1f680;本系列文章为个人学习…

QT CNA上位机报错 解决方案

QT编译报错: -lControlCAN 解决方案 更换三个文件&#xff0c;即可解决(QT 自带的是32位库&#xff0c;应使用64位库文件)

Linux系统编程---Make/MakeFile

认识make/makefile make是一个命令 makefile是一个当前目录下的文件。 make会自动推导makefile中的依赖关系&#xff0c;栈式结构。形成可执行文件 如何清理 在makefile文件里加上clean&#xff0c;运行时直接make clean&#xff0c;建议clean放在后面。 在没有改变源文件的…

深入学习STL标准模板库

C STL standard template libaray 标准模板库 目录 C STL standard template libaray 标准模板库 一、标准容器顺序容器vectordequelistvector deque list对比 容器适配器stackqueuepriority_queue 关联容器unordered_setunordered_multisetunordered_mapunordered_multimapset…

【C++基础】类和对象(4)

目录 一、再探构造函数 1.1 构造函数体赋值 1.2 初始化列表 二、类型转换 三、static成员 概念&#xff1a; 特性&#xff1a; 四、友元 4.1 友元函数 4.2 友元类 五、内部类 六、匿名对象 七、对象拷贝时的编译器优化 一、再探构造函数 1.1 构造函数体赋值 …

Admin.NET源码学习(2:安装并运行前端)

根据Admin.NET的GitHub主页介绍&#xff0c;前端运行步骤需要运行pnpm命令。百度pnpm的话&#xff0c;需要支持npm相关的命令支持。   根据参考文献4&#xff0c;安装Node.js后会提供npm命令支持&#xff08;npm是Node.js的软件包管理器&#xff0c;用于安装、发布和共享Jav…

在Linux系统安装MySQL有多简单

MySQL 是一种流行的开源关系数据库管理系统&#xff0c;广泛应用于各种类型的应用程序和服务。在安装TitanIDE​​​​​​​以后是没有MySQL服务的&#xff0c;我们需要单独安装安装MySQL。本文将介绍在 Linux 上安装 MySQL 的多种方式&#xff0c;包括离线安装、使用 Docker …

纤丝龙:强根固发,滋养头皮的天然秘诀

在我国传统中医学中&#xff0c;头发被视为“血之余&#xff0c;肾之华”&#xff0c;其生长与健康状况直接反映了人体的精神面貌和生命力。然而&#xff0c;现代生活节奏加快&#xff0c;压力不断增大&#xff0c;导致许多人出现头发干枯、分叉、脱落等问题。纤丝龙&#xff0…

“轻、灵、画、韵”,TCL第三代艺术电视引领艺术生活

7月17日&#xff0c;TCL第三代艺术电视A300系列正式上市&#xff0c;其中&#xff0c;A300 Pro配备B&O音响&#xff0c;共有65/75/85三个尺寸&#xff0c;首发到手价分别为8999元、11999元和15999元。不带Soundbar的A300W&#xff0c;它有55/65/75/85四个尺寸&#xff0c;首…

volatile关键字解析

一、volatile介绍 volatile是Java提供的一种轻量级的同步机制&#xff0c;在并发编程中&#xff0c;它也扮演着比较重要的角色。同synchronized相比&#xff08;synchronized通常称为重量级锁&#xff09;&#xff0c;volatile更轻量级&#xff0c;相比使用synchronized所带来的…

Python 读取esxi上所有主机的设备信息

&#xff08;主要是为了统计所有虚拟机的设备名称和所属主机&#xff09; 代码&#xff1a; from pyVim import connect from pyVmomi import vim import ssldef get_vm_devices(vm):devices []try:if vm.config is not None and hasattr(vm.config, hardware) and hasattr(v…

JavaWeb入门程序解析(Spring官方骨架、配置起步依赖、SpringBoot父工程、内嵌Tomcat)

3.3 入门程序解析 关于web开发的基础知识&#xff0c;我们可以告一段落了。下面呢&#xff0c;我们在基于今天的核心技术点SpringBoot快速入门案例进行分析。 3.3.1 Spring官方骨架 之前我们创建的SpringBoot入门案例&#xff0c;是基于Spring官方提供的骨架实现的。 Sprin…

gite+picgo+typora打造个人免费笔记软件

文章目录 1️⃣个人笔记软件2️⃣ 配置教程2.1 使用软件2.2 node 环境配置2.3 软件安装2.4 gite仓库设置2.5 配置picgo2.6 测试检验2.7 github教程 &#x1f3a1; 完结撒花 1️⃣个人笔记软件 最近换了环境&#xff0c;没有之前的生产环境舒适&#xff0c;写笔记也没有劲头&…

R语言实现对模型的参数优化与评价KS曲线、ROC曲线、深度学习模型训练、交叉验证、网格搜索

目录 一、模型性能评估 1、数据预测评估 2、概率预测评估 二、模型参数优化 1、训练集、验证集、测试集的引入 2、k折线交叉验证 2、网格搜索 一、模型性能评估 1、数据预测评估 ### 数据预测评估 #### 加载包&#xff0c;不存在就进行在线下载后加载if(!require(mlben…