JavaScript学习笔记——变量、作用域、var、const和let

JavaScript学习笔记——变量、作用域、var、const和let

  • 学习链接(原链接)
  • 变量
    • 变量声明的三种方式
  • 作用域
    • 作用域介绍
    • 作用域分类
      • 全局作用域
      • 局部作用域(函数作用域)
      • 块级作用域
      • 块级作用域和局部(函数)作用域区别
  • var
    • var的作用域(全局+函数)
    • var变量的重新声明与修改
    • var变量提升
    • JS里面使用var声明变量存在的三个问题
  • const

学习链接(原链接)

菜鸟教程
let和const与var的区别
js中var、let、const的区别
JS里面使用var声明变量存在的三个问题
在JavaScript中,if 语句是/有 块级作用域吗?
JS IF 作用域
JavaScript的三座大山–(2)–作用域和闭包(牛牛牛牛牛)

变量

变量:存储信息的容器
可存放:值or表达式

命名规则:
字母开头
以$或_开头(不推荐)
大小写敏感

变量声明的三种方式

变量声明的三种方式:var、let、const

作用域

作用域介绍

作用域:一个变量或者函数的有效作用范围

作用域分类

在JS中作用域一共有三种,分别是全局作用域、局部作用域(函数作用域)、块级作用域;

全局作用域

全局作用域:
1、声明在函数外部的变量(声明在script标签中的变量和函数),在代码中任何地方都能访问到的对象拥有全局作用域;
var和let变量在全局作用域中都是全局变量;

注意:所有末定义直接赋值的变量自动声明为拥有全局作用域
最外层函数和在最外层函数外面定义的变量拥有全局作用域

2、全局作用域中声明的变量和函数会作为window对象的属性和方法保存,可以通过 window.变量名 去调用它;

3、全局作用域在页面打开时被创建,页面关闭时被销毁;

1)最外层函数和在最外层函数外面定义的变量拥有全局作用域,例如:
var authorName="波妞";
function doSomething(){var blogName="中介";function innerSay(){console.log(blogName);}innerSay();
}
console.log(authorName); //波妞
doSomething(); //中介
console.log(blogName); //错误
innerSay() //错误
2)所有未定义直接赋值的变量自动声明为拥有全局作用域,例如:
function doSomething(){var authorName="波妞";blogName="中介";console.log(authorName);
}
doSomething(); // 波妞
console.log(blogName); //中介
console.log(authorName); //错误

局部作用域(函数作用域)

块级作用域

块级作用域和局部(函数)作用域区别

var

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>JS--varletconst</title>
</head>
<body><script>var x = 1;var y = 2;var z = x + y;document.write(x + "<br>");document.write(y + "<br>");document.write(z + "<br>");</script>
</body>
</html>

在这里插入图片描述
JavaScript——document.write

var的作用域(全局+函数)

var可以在全局范围声明函数/局部范围内声明。

示例:

var smytest = "smy";        //全局范围
function newFunction(){var smytest2 = "inner";console.log(smytest2);
}
console.log(smytest);       //输出:smy
newFunction();              //调用函数,输出:inner
console.log(smytest2);    	//输出:ReferenceError: smytest2 is not defined

var变量的重新声明与修改

var变量可以在相同的作用域内被重新声明和修改

var smytest = "smy";        //全局范围
var smytest = "fighting";   //相同作用域下重新声明
smytest = "emo";            //相同作用域下修改
function newFunction(){var smytest2 = "inner";var smytest2 = "outer"; //相同作用域下重新声明console.log(smytest2);
}
console.log(smytest);       //输出:emo
newFunction();              //调用函数,输出:outer

var变量提升

JavaScript 的一种机制:在执行代码之前,变量和函数声明会移至其作用域的顶部

console.log(greeter);
var greeter = 'say hello';

代码会被解释为:

var greeter;
console.log(greeter); // greeter is undefined
greeter = 'say hello';

var声明的变量会被提升到其作用域的顶部,并使用 undefined 值对其进行初始化

JS里面使用var声明变量存在的三个问题

1、允许重复声明,导致变量被覆盖
假设你var a = 2前面还有上万行代码,那么你调用prinf函数的时候,是想打印之前的a,但是你忘记之前声明的变量和几万行代码后面的a是同名的,导致后面声明的a覆盖了之前的a.

2、变量提升:闭包问题,怪异的数据访问.

if(Math.random() > 0.5){var a = "abc";console.log("if方法1" + a);
}else{console.log("if方法2" + a);
}
console.log("最外层" + a);//输出:
//if方法2undefined
//最外层undefined

const

三级目录

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

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

相关文章

单表的查询练习

一、单表查询 素材&#xff1a; 表名&#xff1a;worker-- 表中字段均为中文&#xff0c;比如 部门号 工资 职工号 参加工作 等 显示所有职工的基本信息。 mysql8.0 [chap03]>select * from worker; 查询所有职工所属部门的部门号&#xff0c;不显示重复的部门号。 mysq…

SOLID 原则

单一功能原则 单一功能原则&#xff08;Single responsibility principle&#xff09;规定每个类都应该有一个单一的功能&#xff0c;并且该功能应该由这个类完全封装起来。所有它的&#xff08;这个类的&#xff09;服务都应该严密的和该功能平行&#xff08;功能平行&#x…

AnyDoor任意门:零样本物体级图像定制化

文章目录 一、AnyDoor简介二、AnyDoor方法&#xff08;一&#xff09;ID特征提取&#xff08;二&#xff09;细节特征提取&#xff08;三&#xff09;特征注入&#xff08;四&#xff09;视频、图像动态采样 一、AnyDoor简介 “任意门”算法&#xff1a;可以将任意目标传送到指…

Java SPI机制总结系列之开发入门实例

原创/朱季谦 在该文章正式开始前&#xff0c;先对 Java SPI是什么做一个简单的介绍。 SPI&#xff0c;是Service Provider Interface的缩写&#xff0c;即服务提供者接口&#xff0c;单从字面上看比较抽象&#xff0c;你可以理解成&#xff0c;该机制就像Spring容器一样&…

Python之Matplotlib绘图调节清晰度

Python之Matplotlib绘图调节清晰度 文章目录 Python之Matplotlib绘图调节清晰度引言解决方案dpi是什么&#xff1f;效果展示总结 引言 使用python中的matplotlib.pyplot绘图的时候&#xff0c;如果将图片显示出来&#xff0c;或者另存为图片&#xff0c;常常会出现清晰度不够的…

【JAVA】在 Queue 中 poll()和 remove()有什么区别

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;JAVA ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 poll() 方法&#xff1a; remove() 方法&#xff1a; 区别总结&#xff1a; 结语 我的其他博客 前言 在Java的Queue接口中&…

强化学习应用(六):基于Q-learning的物流配送路径规划研究(提供Python代码)

一、Q-learning算法简介 Q-learning是一种强化学习算法&#xff0c;用于解决基于马尔可夫决策过程&#xff08;MDP&#xff09;的问题。它通过学习一个值函数来指导智能体在环境中做出决策&#xff0c;以最大化累积奖励。 Q-learning算法的核心思想是使用一个Q值函数来估计每…

day-09 删除排序链表中的重复元素

思路 从前往后遍历链表&#xff0c;当当前节点的值与下一个节点值相等时&#xff0c;删除下一节点&#xff1b;否则向后移动一个节点&#xff0c;继续遍历 解题方法 while(p!null&&p.next!null){ if(p.next.valp.val)p.nextp.next.next;//当前节点的值与下一个节点值相…

鸿蒙Harmony-层叠布局(Stack)详解

我们总是为了太多遥不可及的东西去拼命&#xff0c;却忘了人生真正的幸福不过是灯火阑珊处的温暖&#xff0c;柴米油盐的充实&#xff0c;人生无论你赚的钱&#xff0c;是多还是少&#xff0c;经历的事情是好还是坏&#xff0c;都不如过好当下的每一天&#xff01; 目录 一&am…

初始化数组

一、静态初始化格式&#xff1a; 数据类型[ ] 数组名 new 数据类型[ ]{元素1&#xff0c;元素2&#xff0c;元素3......} 等号后面的new 数据类型可以省略 注意&#xff1a;什么类型的数组只能存放什么类型的数据 直接打印a或b会显示其地址 数组的元素个数&#xff1a;arr…

C# 基础入门

第二章 C# 语法基础 2-1 C# 中的关键字 关键字&#xff0c;是一些被C#规定了用途的重要单词。 在Visual Studio的开发环境中&#xff0c;关键字被标识为蓝色&#xff0c;下图代码中&#xff0c;用红方框圈出的单词就是关键字。 关键字 class &#xff0c;这个关键字的用途是…

Linux下编写zlg7290驱动(1)

大家好&#xff0c;今天给大家介绍Linux下编写zlg7290驱动(1)&#xff0c;文章末尾附有分享大家一个资料包&#xff0c;差不多150多G。里面学习内容、面经、项目都比较新也比较全&#xff01;可进群免费领取。 在智能仪表中&#xff0c;经常会用到键盘、数码管等外设。因此&…

【Java语言基础②】Java基本语法——Java程序基本格式,注释,标识符,常量

通过前面的学习&#xff0c;大家对Java语言有了一个基础认识&#xff0c;但现在还无法使用Java语言编写程序&#xff0c;要熟练使用Java语言编写程序&#xff0c;必须充分掌握Java语言的基础知识。今天咱们就来聊一聊Java的基本语法。 1.java程序的基本格式 Java程序代码必须…

Spring Boot 3 + Vue 3实战:引入数据库实现用户登录功能

文章目录 一、实战概述二、实战步骤&#xff08;一&#xff09;创建数据库&#xff08;二&#xff09;创建用户表&#xff08;三&#xff09;后端项目引入数据库1、添加相关依赖2、用户实体类保持不变3、编写应用配置文件4、创建用户映射器接口5、创建用户服务类6、修改登录控制…

NLP论文阅读记录 - 2021 | WOS 使用深度强化学习及其他技术进行自动文本摘要

文章目录 前言0、论文摘要一、Introduction1.1目标问题1.2相关的尝试1.3本文贡献 二.相关工作2.1. Seq2seq 模型2.2.强化学习和序列生成2.3.自动文本摘要 三.本文方法四 实验效果4.1数据集4.2 对比模型4.3实施细节4.4评估指标4.5 实验结果4.6 细粒度分析 五 总结思考 前言 Auto…

Java:常见算法

认识算法 什么是算法&#xff1f; 解决某个实际问题的过程和方法 学习算法的技巧 先搞清楚算法的流程直接去推敲如何写代码 排序算法 冒泡排序 每次从数组中找出最大值放在数组的后面去。 实现冒泡排序的关键步骤分析 确认总共需要做几轮&#xff1a;数组的长度-1每轮比较…

【java】创建打印数组的方法并调用

java的数组和Python不一样&#xff0c;不能直接用print打印&#xff0c;而如果每次都用循环的方法&#xff0c;比较麻烦&#xff0c;就直接创建一个类&方法&#xff0c;每次用的时候直接调用。 public class list_deal {public static void printArray(int[] arr){for (in…

Python实现对角但非同一性协方差结构回归模型(WLS算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 WLS回归分析是一种常用的回归分析方法&#xff0c;通过对数据进行加权处理&#xff0c;可以更准确地评…

VSCode编写 C/C++ 程序

VSCode 全称 Visual Studio Code&#xff0c;是微软出的一款轻量级代码编辑器&#xff0c;免费、开源而且功能强大。它支持几乎所有主流的程序语言的语法高亮、智能代码补全、自定义热键、括号匹配、代码片段、代码对比 Diff、GIT 等特性&#xff0c;支持插件扩展&#xff0c;并…

Day02

今日任务&#xff1a; 977 有序数组的平方209 长度最小的子数组59 螺旋矩阵Ⅱ 977 有序数组的平方 题目链接&#xff1a;https://leetcode.cn/problems/squares-of-a-sorted-array/ 双指针问题&#xff0c;以及数组本身时有序的&#xff1b; 思路&#xff1a; 左、右两个…