var 作用域||变量

article/2025/10/4 22:59:52

平常我们在使用js 的时候一般使用var来声明变量,相比于C语言Java当中的声明变量要简单一些,但是简单肯定也会有简单的不好之处。 一般来讲,在函数内部(local variable)中,js初始化变量加var的为局部变量不加的时候表现为全局变量(它们都给window对象添加了一个属性)。

例如:

 function foo() {t=11}foo();console.log(t); //11console.log("t" in window); //true

可见,在函数中不用var声明表现为全局变量,可以对这个属性进行修改。

 function foo(){var t=11;}foo();//console.log(t);  //后台输出:is not definedconsole.log("t" in window); //fase

可见这里的t为局部变量,函数当中声明的变量只在函数作用域当中生效,一旦离开了作用域调用就会报错。

我们再看几个例子。

  var b=2;function foo1() {b=4;console.log(b);   //4}foo1();console.log(b);   //4

在这里首先定义了 一个变量b,然后在函数内部修改了b的值,因为函数内部的b为全局变量,修改了函数外的变量b。(函数内的b:“俺先在foo里面找找看有没有和俺相同名字的兄台,有就把它赋值为4.很不幸的是foo里木有,于是俺往外找,找呀找,终于在最外层找到一个b,嘿嘿,先把它干了再说~”)

var b=2;function foo1() {var  b=4;console.log(b);   //4}foo1();console.log(b);   //2

这里我们在函数内部的b前面加上var使它为局部变量,执行后全局变量b就没有被改变。

我们都知道在函数最外部,我们用var声明一个变量为全局变量,但是如果不加var会出现啥子结果捏?

例子:

t=11;
console.log(t);  //11
console.log("t" in window); //true

结果也为全局变量(window对象的属性)。

有人会想:那我只要加上var关键字就能让它只在当前作用域生效咯?

------不一定

注意:JavaScript没有块级作用域. 例如.

 function foo() {for(var i=0;i<10;i++){console.log("for内"+i);        //0,1,2,3,4,5,6,7,8,9}console.log("函数内for外"+i);    //10}foo();

这里在语句内定义一个变量i,但i的表现实则是在函数内定义的。所以我们能够在语句外函数内去引用变量。 那么我们如何使块语句中声明的变量只作用在块语句内呢?

 function foo() {(function() {for(var i=0;i<10;i++){console.log("for内"+i);    //0~9}})();console.log("函数内for外"+i);   //报错
} 
foo();

但是我们不建议过多地使用全局变量,因为全局变量过多很容易出现变量污染的问题,出错的时候也不容易排除。

相关内容:用实例说明 var、let、const 的区别和特性

关注公众号bug人生回复“资料”即可获得为您精心准备的前端视频学习资料
在这里插入图片描述


http://chatgpt.dhexx.cn/article/DJ5Fi90K.shtml

相关文章

第一讲:var的使用

目录 使用var声明变量 不使用var&#xff0c;直接给变量赋值 变量的作用域 全局变量和局部变量的混用 变量提升 总结 javascript中&#xff0c;使用var声明变量&#xff0c;看似简单易学&#xff0c;其实不然。 在我接触的许多编程语言中&#xff0c;如c, c#, vb, java, p…

let与var的区别

前端小白刚学习JavaScript接触到变量的时候可能会有点懵&#xff0c;那就是什么时候该用let&#xff0c;什么时候该用var&#xff0c;这里给大家一个最简单&#xff0c;最明了的答案&#xff0c;看完就能明白。 首先&#xff0c;let是拥有块级作用域的&#xff0c;什么是块级作…

val和var的区别

美图欣赏&#xff1a; 一.背景 学习过程中&#xff0c;会有很多小的并且容易混淆知识点&#xff0c;因此会把它记录下来。 二.val(value)和var(variable)的区别 基本语法&#xff1a; var|val 变量名 : 变量类型 变量值1.使用var或者val定义一个变量。 使用var(variable)声…

var

在函数中&#xff0c;使用var声明的变量&#xff0c;为局部变量&#xff0c;只能在函数内部访问。 不使用var声明的变量&#xff0c;为全局变量&#xff0c;在函数外边也能访问。 没有var的情况 <script type"text/javascript">a 10;function demo() {console…

VaR如何计算?VaR计算方法

VaR方法提出的背景 传统的ALM(Asset-Liability Management,资产负债管理)过于依赖报表分析&#xff0c;缺乏时效性&#xff1b;利用方差及β系数来衡量风险太过于抽象&#xff0c;不直观&#xff0c;而且反映的只是市场&#xff08;或资产&#xff09;的波动幅度&#xff1b;而…

Matlab画线实例图

1 plot画线 直线&#xff1b; 设置线宽和颜色&#xff1b; 黄色&#xff0c;8像素宽&#xff1b; 直线&#xff0c;黄色&#xff1b; 2 line 画线 画的是坐标(1,3)到(2,4)的一条线&#xff1b; 设置线型和颜色&#xff1b; 3 数学曲线 另一个&#xff1b;

matlab 绘制三维空间直线

绘制三维空间直线 clc,clear; x-2:0.1:2; y(-17*x9)/9; z(-7*x7)/9; plot3(x,y,z,m); grid on

Matlab图像线条绘制

1.线型 定义符---:-.线型实线&#xff08;缺省值&#xff09;划线点线点划线 2.线条宽度 指定线条的宽度&#xff0c;取整为整数&#xff08;单位为像素&#xff09;。 3.线条颜色 定义符r(red)g(green)b(blue)c(cyan)颜色红色绿色蓝色青色 定义符m(magenta)y(yellow)k(bla…

matlab绘制垂线(x轴或y轴)

使用line函数就可以绘制垂线 1、绘制垂直于x轴的垂线 line([xvalue xvalue],[y1 y2])&#xff1b; 比如绘制x5 y取值为[0,10]&#xff1b; line([5 5],[0 10]); 2、绘制垂直于y轴的垂线 line([x1 x2], [yvalue yvalue])&#xff1b; 比如绘制y5 x取值为[0,10]&#xff…

由两点坐标如何画出直线 matlab

由两点坐标如何画出直线 方法1&#xff1a;利用直线方程 斜率加截距 方法2&#xff1a;数据拟合 1 %由两点坐标得数据拟合直线与画线 2 x [1,2];3 y [5,8];4 k ((8-2)/(5-1));% 由两点坐标得到直线斜率5 line k*x0.5;% 直线方程6 7 xy 1:10;% 定义画线的 x 长度8 line1 …

matplotlib画直线

使用matplotlib画两条直线&#xff1a; Code : from matplotlib.lines import Line2D import matplotlib.pyplot as pltfigure, ax plt.subplots() # 设置x&#xff0c;y值域 ax.set_xlim(left0, right20) ax.set_ylim(bottom0, top10) # 两条line的数据 line1 [(1, 1), (5…

Matlab点画线

这个作图和python还是有点区别的&#xff0c;似乎对命令输入的顺序还有要求。 t[1190.2 1153.14 1071.56 1069.22 1063.18 ]; w10:10:50; % scatter(w,t,sz,r,filled); plot(w,t,o--,linewidth,2) hold on t1[1073.02 1057.81 1129.7 1028.18 1015.6 ]; plot(w,t1,*--,linewid…

用MATLAB一直画直线竟然得到了简单的禅绕画,论一直画直线的人有多无聊

之前看过一个视频&#xff0c;有个人把纸面分割成一个一个三角后一直画直线&#xff0c;慢慢的图纸上的图案变得复杂了起来&#xff0c;大概是像下面这样&#xff1a; 上面这个图便是我用matlab模拟的效果&#xff0c;过程很简单&#xff0c;就是用了泊松云盘采点构建三角网格&…

matlab画图线形

线型说明-实线–虚线:点线-.点划线 标记说明o圆圈加号*星号.点x叉号s方形d菱形^上三角v下三角>右三角<左三角p五角形h六角形 颜色说明y黄色m品红色c青蓝色r红色g绿色b蓝色w白色k黑色 plot(x,y1,‘g’,x,y2,‘b–o’,x,y3,‘c*’) 循环设置线形 linestyle{--,-,:,-o,…

matlab画平行坐标轴的直线

想要在普通图形的基础上添加平行于坐标轴的直线 clc clear xmin 2000 xmax 2120 ymin 0 ymax 16 x[2020 2040 2060 2080 2100 2110]; y[1.3 2 3.5 5.8 10 14.8]; xxlinspace(2012,2110); yyspline(x,y,xx); plot(xx,yy,-c,LineWidth,3) axis([xmin xmax ymin ymax]) grid o…

matlab中的画线函数line()

line()函数可以在画布中画一些辅助线。 line([起点横坐标&#xff0c;终点横坐标],[起点纵坐标&#xff0c;终点纵坐标])&#xff0c; line([1,2],[3,4])将画出&#xff08;1,3&#xff09;到(2,4)的一条直线&#xff0c;而不是(1,2)到(3,4)。 举个栗子&#xff1a; subplot…

Matlab如何画竖线图

目录 前言第一种[^1]第二种[^2]第三种总结 前言 主要介绍3种画竖线图的方法&#xff0c;使用工具为MATLAB 2020a。 第一种1 x 1:3; y [1,5,6]; %5为在2点的y值 n length(x); for i 1:nplot([x(i),x(i)],[0,y(i)],b);hold on end xlim([0 5])运行结果&#xff1a; 第二种2…

MATLAB同时画多条直线段/两点画线

使用函数&#xff1a; line&#xff1a;创建线条图形 语法格式&#xff1a; 二维线段&#xff1a;line(x,y) &#xff0c;三维线段&#xff1a;line(x,y,z) 使用方法&#xff08;以三维为例&#xff09;&#xff1a; 如果 x 、y 和z是具有相同长度的向量&#xff0c;则 li…

Matlab画x=a,y=b直线

画一般直线可直接使用line&#xff0c;line(x,y) x [3 2]; y [15 12]; line(x,y); 但画xa,yb这种特殊直线&#xff0c;可以用plot(x,y)&#xff0c;高级用法是xline(a);yline(b) xline(3.4); yline(4.5); 而plot(x,y)用法如下&#xff1a;对于xa&#xff1a; x[1,1];%表示…

matlab中绘制平行于坐标轴的直线

有时候需要绘制平行于坐标轴的一条直线&#xff0c;那有没有什么简便的方法呢&#xff1f;通过在plot&#xff08;&#xff09;函数加入参数就可以&#xff0c;代码如下&#xff1a; x0:0.1:2*pi; %x的取值生成 ysin(x); %ysin(x)函数 plot(x,y); %绘制图形 ylimget(gca,Y…