JS中函数与作用域的定义(日志-2022.3.28)

2023-05-16

1、函数中的两种命名方式:

1、利用函数关键字function自定义函数(命名函数)

function fu(){

}

fn();

2、利用函数表达式(匿名函数)

var 变量名=function (){};

var fn=function (arguments){

console.log('我是函数表达式');

console.log(arguments);

}

fn('你好');//输出:我是函数表达式and你好;

对于如上代码注意:

  • 1、fn是变量名,不是函数;
  • 2、函数表达式声明方式跟声明变量差不多,只不过变量里面存的是值而函数表达式里存放的是可调用的函数;
  • 3、函数表达式也可以进行传递参数。

2、JavaScript作用域

1.JavaScript作用域﹔就是代码名字(变量)在某个范围内起作用和效果,目的是为了提高程序的可靠性更重要的是减少命名冲突、
2.js的作用域分:全局作用域和局部作用域

  • 全局作用域:类似整个script标签或者是一个单独的js文件。
  • 局部作用域(函数作用域)在函数内部就是局部作用域,这个代码的名字只在函数内部起效果和作用。

var num=1

function fn(){

//局部作用域

var num=100;

console.log(num);

}

console.log(num);

fn(num)

输出结果为:1and100;

透过不同的结果可以看出局部作用域不受全局作用域的影响。

3、全局变量与局部变量

A:全局变量

  • 在全局作用域下声明的变是叫做全局变量(在函数外部定义的变量)。全局变量在代码的任何位置都可以使用
  • 在全局作用域下用var声明的变量是全局变量
  • 特殊情况下,在函数内不使用var声明的变量也是全局变量(不建议使用)

B:局部变量

  • 在局部作用域下声明的变量叫做局部变量(在函数内部定义的变量)
  • 局部变量只能在该函数内部使用
  • 在函数内部var声明的变量是局部变量,函数的形参实际上就是局部变量。

4、作用域链

  • 只要是代码,就至少有一个作用域;
  • 写在函数内部的局部作用域;
  • 如果函数中还有函数,那么在这个作用域中就又可以诞生一个作用域;
  • 根据在内部函数可以访问外部函数变量的这种机制,用链式查找决定哪些数据能被内部函数访问,就称作作用域链。

案例:

    <script>
        var a = 1;

        function fn1() {
            var a = 2;
            var b = '22';
            fn2();

            function fn2() {
                var a = 3;
                fn3();

                function fn3() {
                    var a = 4;
                    console.log(a);
                    console.log(b);
                }
            }
        }
        fn1();//输出4and'22'
    </script>

5、JS预解析

1.js引擎运行js分为两步:A:预解析B:代码执行;
(1).预解析    JS 引擎会把JS里出所有var还有function提升到当前作用域的最前面

(2).代码执行按照代码书写的顺序从上往下执行
2.预解析分为变量预解析(变量提升)和函数预解析(函数提升)
(1)变量提升就是把所有的变量声明提升到当前的作用域最前面不提升赋值操作

(2)函数提升就是把所有的函数声明提升到当前作用域的最前面,但不调用函数。

对于不提升赋值操作解释:

console.log(num);

var num=0;//返回undefined。原因是预解析将变量声明提升到了作用域的最前面此时num为未赋值的变量
 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JS中函数与作用域的定义(日志-2022.3.28) 的相关文章

  • 2022,音乐号自媒体起号涨粉保姆级攻略,这是个收获的季节。

    前言 最近遇到好多朋友说想做短视频自媒体 xff0c 但找了很多资料 xff0c 甚至报了学习班也没什么起色 xff0c 这不前天一个姐姐说他家姑娘想做抖音 xff0c 俩月了没啥粉丝也没啥播放量 xff0c 看到我的音乐号了 xff0c
  • 考试 2022 5 20 代码

    倒数第一 include lt bits stdc 43 43 h gt using namespace std define INF 0x3f3f3f3f const int N 61 1e6 43 10 define ios ios s
  • xindi-2022-08-23数据分析记录

    将RNA seq原始数据存放在raw data文件夹 xff0c 经过去除接头的数据存放在clean data中 1 使用Trim Galore软件对两次数据进行质控 xff0c 去掉20bp以下的reads vim新建RNA seq sc
  • AHU 2022 CTF新生赛web_writeup

    第一次当出题人 xff0c 给新生做的 xff0c 简简单单啦 按不了的F12 启动靶机 xff1a 根据题目名称可知 xff0c 这题与f12按键有关 xff0c 即查看网页源代码 按下f12发现f12按键被禁用 xff1a 尝试另一种方
  • Vim配置文件vimrc 2022_11_18

    Vimrc简介 vimrc是vim的配置文件 xff0c Vim编辑器相关的所有功能开关都可以通过 vimrc文件进行设置 备注 xff1a 文件名中的 rc 是出自 run commands 最初的源头是麻省理工学院在1965年发展的CT
  • 2022.04.04树莓派最新镜像问题,树莓派如何设置初始化的账户和密码

    树莓派最新的arm64位系统 xff0c 更新时间是2022年4月4日 xff0c 这个版本的树莓派取消了默认的账户密码 xff0c 也就是原来一直使用的pi和对应的默认密码raspberry被取消了 xff0c 现在如果想要使用的话必须自
  • 2022记忆

    今年开年来就重新找工作 xff0c 因为就在去年大概这个时候 xff0c 公司裁员了 找工作 xff0c 对于我们这种大龄程序员来说是一种挑战 xff0c 很多公司表面说可以聊聊 xff0c 最后谈了之后 xff0c 发现技术也可以 xff
  • 2022年,立个Flag

    2021年在平静的生活中 xff0c 慢慢的从手指缝中划过 xff0c 新的一年已经都来 xff0c 我也立下几个flag xff0c 待明年末来验收 2022年我希望自己可以开始并坚持做一些事 xff1a 1 实现自己定义的目标 xff0
  • 【2022.2】Windows10自动更新及你的组织正在管理你的更新

    按照以往 xff0c 我是不会关闭自动更新的 xff0c 但是这次好像出了什么问题 xff0c 到点就会弹出个更新窗口 xff0c 说什么你的组织准备管理你的计算机 并且自动更新也失败 xff0c 这一阵电脑开着到点就会自己更新 xff0c
  • 树莓派OS:2022-04-04版的Headless设置方法

    Raspberry Pi OS 2022 04 04版增加了一个特性 xff1a 取消了祖传的默认用户 pi 当你刷完镜像首次使用的时候 xff0c 会先跳出来一个界面让你指定用户名和密码 xff0c 无论是桌面版还是Lite版 显然这是一
  • 2022.10.30

    新愁复旧愁 xff0c 苦痛哀伤恨
  • (2022.12.12 )完成mavros配置+PX4配置

    一 mavros 安装配置 在安装之前 xff0c 请先更新软件库 xff1a sudo apt get update sudo apt get upgrade 遇到问题 无法安全地用该源进行更新 xff0c 所以默认禁用该源 N 参见 a
  • 自监督模型 Self-supervised learning(李宏毅2022

    这个红色的怪物叫做ELMo 最早的self supervised learning model 作业四的模型也是个transformer xff0c 只有0 1个million 最早的是ELMo Cookie Monster等你来凑 x1f
  • 2022-03-30 VsCode中使用clangd插件的各种设置

    最近尝试clang编译c 43 43 xff0c 所以用了clangd插件代替mscpp插件 xff0c 其中有不少问题 xff0c 都是通过各种搜索 xff0c 各种猜 xff0c 才能完善 xff0c 记录一下 xff0c 以便广大同仁
  • 2022同济825自控原理

    1 求 R L C RLC R L C 电路的传递函数 2 求 M a s
  • 2022-2-28 T265 追踪相机 vrep逆运动学

    安装realsense SDK Ubuntu 16 安装realsense SDK 需要注意相机坐标系到机械臂坐标系的转变 下一步还需要完成末端的深度相机标定 realsense自带的API功能很全了 得到的追踪相机位姿直接融入之前的qt工
  • 2022数学建模国赛B题思路分析

    分享一下 xff0c 仅供参考借鉴 xff0c 切勿直接使用 xff01 致谢一下全糖奶茶屋 xff01 一 问题重述 1 1 问题背景 由于无人机集群在遂行编队飞行时 应尽可能的避免外界干扰 因此需要尽可能的保持电磁静默减少电磁波信号的发
  • 前端js调用后端API获取数据的三种方法(2022.7.25)

    前端js调用后台API获取数据的三种方法 xff08 2022 7 25 xff09 前言需求分析一个Get实例浏览器请求SoapUI软件请求 一个Post实例浏览器请求SoapUI软件请求 1 Http简介 xff08 Browser S
  • Visual Studio 2022下载安装

    Visual Studio 2022下载安装 1 进入官网 官网地址 xff1a https visualstudio microsoft com 这里以Windows操作系统为例 根据需要选择版本 xff0c 我这里下载的是Enterpr
  • 绝对定位的元素宽度自动撑开

    position absolute white space nowrap

随机推荐

  • Pycharm+Anaconda+yolov5-5.0部署(手把手教+解决一些运行过程中的问题+最全部署yolov5)

    目录 一 在pycharm打开克隆后的yolov5 5 0的项目二 配置pycharm的解释器1 依次打开 文件 gt 设置 gt 项目 gt python解释器2 打开配置好的deeplearn学习环境1 单击添加解释器 gt 单击添加本
  • python基础:(三)列表———操作列表(需有基本的for循环基础)

    目录 一 for循环遍历列表二 创建数值列表2 1利用函数对数值列表的一些基本操作2 1 1max 求数值列表中的最大值2 1 2min 求数值列表中的最小值2 1 3sum 求数值列表中数值的和 三 使用列表的一部分3 1切片3 2遍历切
  • python基础:(七)类

    目录 一 创建和使用类二 使用类和实例2 1给属性指定默认值2 2修改属性的值2 2 1直接修改属性的值2 2 2通过方法修改属性的值2 2 3通过方法对属性的值进行递增 三 继承3 1子类的方法 init 3 2给子类定义属性和方法3 3
  • python基础:(八)文件

    目录 一 从文件中读取数据1 1读取整个文件1 2文件路劲1 3逐行读取 二 写入文件 一 从文件中读取数据 各位小伙伴 xff0c 文件这一块得好好学 xff0c 多看多敲代码 xff0c 以后处理数据 xff0c 写爬虫少不了这个 xf
  • 立创EDA极速入门(2)——完成一个STM32最小系统板

    请提前观看 xff1a 立创EDA极速入门 xff08 1 xff09 熟悉PCB和立创EDA基本操作 xff1b 邀请加入嵌入式社区 xff0c 您可以在上面发布问题 xff0c 博客链接 xff0c 公众号分享 xff0c 行业消息 x
  • UEditor插入视频、图片显示问题解决

    把你富文本提交过来的的数据 xff0c 使用php的stripslashes xff0c 处理一下 xff0c 去掉里面的反斜杠 这样 xff0c 当你插入视频的时候 xff0c 前台就不会显示没有加载插件什么的了
  • Ubuntu20.04的一些功能设置记录(持续更新)

    目录 一 设置屏幕转向 二 设置启动免登录 三 缩短Ubuntu启动时间 四 设置终端的默认大小 五 安装中文输入法 一 设置屏幕转向 1 设置 显示器 方向 下拉选择方向 应用 2 选择保留更改 xff0c 重启也会保留设置 3 临时旋转
  • 1.3安装Ubuntu20.4系统

    在NUC小电脑上装乌班图Ubuntu系统的步骤 xff0c 在VMware虚拟机上安装Ubuntu系统也差不多是一样的 安装Ubuntu20 4 xff08 用虚拟机的跳过此步骤 xff09 开机之前把U盘启动盘插在小电脑上 xff0c 否
  • C++:类定义下的对象成员,静态成员,以及静态成员函数的实现

    我之前在一篇文章中 xff0c 讲解了对象是什么 xff0c 对于一些刚看我文章的朋友 xff0c 我在这里再次简单的描述一下 xff0c 如果想要更加深入的了解 xff0c 就请就看我之前发表的文章 我们知道 xff0c c 43 43
  • Linux项目自动化构建工具-make/makefile 介绍及使用

    使用背景 在工程中的源文件不计数 xff0c 其按类型 功能 模块分别放在若干个目录中 xff0c makefile定义一系列 规则来指定什么文件需要先编译 xff0c 什么文件需要后编译 xff0c 哪些文件需要重新编译 xff0c 或者
  • 学习笔记二(开发板入门)

    正点原子Stm32开发板IO对于5V的兼容性判断 xff1a 从原理图上看 xff0c 凡是有ADC字样的IO xff0c 都不兼容5V xff0c 反之 xff0c 则都兼容5V 开发板供电的时候 xff0c 有如下注意事项 xff1a
  • 2D转换之缩放 transform:scale()(笔记)

    4 5 2D转换之缩放scale 缩放 xff0c 顾名思义 xff0c 可以放大和缩小 只要给元素添加上了这个属性就能控制它放大还是缩小 缩放 1 语法 transform scale x y 2 注意 注意其中的x和y用逗号分隔 tra
  • 2D转换综合写法(笔记)

    注意 1 同时使用多个转换 xff0c 其格式为 transform translate rotate scale 等 xff0c 2 其顺序会影转换的效果 先旋转会改变坐标轴方向 3 当我们同时有位移和其他属性的时候 xff0c 记得要将
  • 2D转换总结(日志)

    转换transform 我们简单理解就是变形有2D和3D之分我们暂且学了三个分别是位移旋转和缩放2D移动translate x y 最大的优势是不影响其他盒子 xff0c 里面参数用 xff0c 是相对于自身宽度和高度来计算的可以分开写比如
  • 大数据热点分析图源码

    lt style gt body background color 333 map position relative width 746px height 617px margin 30px auto background url ima
  • 关于微信支付和支付宝支付,调试不同的常见问题

    1 首先要知道 xff1a 微信支付 xff0c 电脑端扫描支付 xff0c 手机微信支付 xff0c 用的是一个接口 xff1b 支付宝的即时到账 xff0c 电脑端和手机端的支付 xff0c 使用的是两个不同的接口 xff0c 这点很坑
  • 奔跑的熊大动画效果JS

    利用动画去尝试制作相应的动画效果熊的制作思路在于 xff1a 图片添加了动画效果 xff0c 在时间范围内渐动改变 xff0c 关键帧一直在改变 xff0c 图片被往前拉熊展现奔跑的效果熊奔跑的制作思路 xff1a 基础效果盒子移动到水平居
  • JS中 遍历数组 2022/3/23日志

    lt 遍历数组 xff0c 找出大于20的数组 xff0c 重组新数组 gt lt script gt 创建新数组需要利用 new Array 关键字建立 var array 61 new Array 22 12 64 12 15 122
  • JS·函数

    1 函数语法规则 xff1a 声明部分 function 函数名 xff08 xff09 function为声明函数的关键字 函数体执行代码 xff08 xff09 注意 xff1a 声明函数后需要调用函数否则无效 xff0c 函数不调用自
  • JS中函数与作用域的定义(日志-2022.3.28)

    1 函数中的两种命名方式 xff1a 1 利用函数关键字function自定义函数 xff08 命名函数 xff09 function fu xff08 xff09 fn 2 利用函数表达式 xff08 匿名函数 xff09 var 变量名