问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

JavaScript声明变量或对象时,var关键词是否能省略?

发布网友 发布时间:2022-05-15 22:00

我来回答

4个回答

懂视网 时间:2022-05-16 02:21

在JavaScript中,var用来声明变量,但是这个语法并不严格要求,很多时修改,我们可以直接使用一个变量而不用var声明它。

诸如此类。这有一个问题,比如说在代码中的某一行,我想使用的一个已声明的变量x,结果由于打字或者拼写错误,这个变量被写成y了,结果相当于“隐式”声明了一个变量y,在实际编程过程中,这种错误有时比较难以发现。
除此之外,今天通过同事介绍,了解到这种“隐式声明”中的别外一个问题。
当你在当前上下文内进行这种“隐式”声明时,JavaScript引擎会先在当前上下文中寻找是否之前有声明此变量,如果没有,再到上一级的上下文中去寻找,如果一直未找到,会最后在window上声明这个变量!
比如:

代码如下:

window. y = "hello"; 
function func(){ 
y = "OH, NO!!!"; 
} 
func(); 
alert(window.y); //#=> display "OH, NO!!!"

当上下文中的任意一层有这种“隐式”定义的变量时,那么该层的该变量会被修改,而不会在window上生成一个新的变量。(这种bug也挺讨厌的,尤其是封装的比较复杂的代码)
比如:

代码如下:

var x = "window.x"; 
function a() { 
var x = "a's x"; 
var b = function() { 
var c = function() { 
//no var! 
x = "c's x:"; 
}; 
alert("before c run,the b.x:" + x); 
c(); 
alert("after c run, the b.x:" + x); 
}; 
alert("a.x is:" + x); 
b(); 
alert("after b function runed, the a.x is:" + x); 
}; 
alert("before a run, window.x:" + x); 
a(); 
alert("after a run, window.x:" + x);

这里面有以下几层:window, func a, func b, func c一直作层级嵌套。window->a->b->c
window和a中,都有定义变量x,b中未定义该变量,在c中‘隐式'声明了一个x,该x最终修改了a变量的值。
牢记,在JavaScript中,声明变量,一定前面要加var .

热心网友 时间:2022-05-15 23:29

js声明变量使用var声明与不使用var声明比较


Javascript声明变量的时候,虽然用var关键字声明和不用关键字声明,很多时候运行并没有问题,但是这两种方式还是有区别的。可以正常运行的代码并不代表是合适的代码。


JS中变量申明分显式申明和隐式申明。

var i=100  //显示申明
i=100      //隐式申明


在函数中使用var关键字进行显式申明的变量是做为局部变量,而没有用var关键字,使用直接赋值方式声明的是全局变量。


当我们使用访问一个没有声明的变量时,JS会报错。而当我们给一个没有声明的变量赋值时,JS不会报错,相反它会认为我们是要隐式申明一个全局变量,这一点一定要注意。

望采纳 Thx

热心网友 时间:2022-05-16 00:47

能啊。
如果省略的话 那它就是全局变量。
不省略,写在方法外就是也是全局变量;写在方法内 就是菊部变量啦。追问这是带了括号的Object()是什么

追答你都没采纳我, 好伤心...
好吧.
var user = new Object(); 类似于java中对象的声明, user就是一个对象, js是弱类型语言,但是也是面向对象语言.
你可以在下面接着写
user.name = 'liming';
user.password = '123'; 等等。。。。
上面是赋值, 如果使用的话和java一样
alert(user.name);
js 入门低,提高难.

热心网友 时间:2022-05-16 02:22

可以省略的
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
如何查被录取到的专业 怎样查被录取的专业 录取后怎样查询录取的专业 录取专业怎么查 已被录取怎么查专业 ghs网络语什么意思_ghs网络语意思出处含义介绍 纸箱企业管理软件 ghs什么意思网络(ghs什么意思网络用语) 《喜羊羊与灰太狼》大结局 0与任何数相加都得原数吗? 有谁真的用过维A酸乳膏,,真的能去痘印吗? 维A酸乳膏祛痘印? 维A酸乳膏 去痘印 效果好不好? 维A酸乳膏能去痘痘和痘印吗? 维a酸乳膏祛痘痕 物业公司应该给小区门卫保安提供什么样的工作环境? 聊聊冬季吃火锅的体验? 设函数f(x)连续,且∫x0tf(2x?t)dt=12arctanx2.已知f(1)=1,求∫21f(x)dx的值 若积分1到xf(t)dt=arcsinx 则f'(x)= 5000元左右配一台好点的电脑,各项配置详细说明,为什么cpu酷睿i5和i7,,i5卖的更好一点呢 高数题求解设f(x)连续,且f(x)∫(0,x)f(t)dt=arctan√x/√x(1-x)(x>0),求f(x) 请求(arctan.t)^dt 的不定积分,做出来的高分 设f(x)=根号下1-x^2+arctanx*f(t)dt从0到1的积分 ∫arctanxdx=xarctanx-∫xdarctanx =??? 图中1/(1-x)^2怎么展开为幂级数的? ∫10arctan(1+√x)dx的解是多少?很急,很急,谢谢 ex2-1dt arctan 如何用三个全等直角三角形证明勾股定理 ∫arcsin√xdx= ∫arctant/t²dt=-∫arctantd(1/t),左边式子是怎么推出右边式子的? 苹果12的5G技术是哪个公司的? 天猫退店时考核2.9 你还记得当年的国服第一AD文森特吗?你喜欢他的打法吗? 文森特的德莱文,有几分天赋和几分后天努力? 煮熟的猪肝怎样做才好吃 3+2职业院校与本科高校对口贯通分段培养 是什么意思?跟专升本一样... 3+2专本贯通培养和本科区别 南瓜花卷是怎样做的呢? 我想知道3+2贯通培养本科和普通专科升本科出来的毕业证有什么区别吗?那个更好?能不能考研和公务员? 南瓜花卷是怎么做的? 三加二(高职院校与本科贯通培养)与专升本的区别?尤其是他们毕业证上 发动机的主要性能指标有哪些 专科的2 2和3 2贯通各是什么意思? 重庆工程职业技术学院“专本贯通”是什么意思? iPhone 无法登陆,因为已丢失网络连接 iphone4上网显示SAFARI打不开该网页 因为已丢失网络连接 ! 我的iphone4显示: Safari打不开该网页,因为已丢失网络连接 小米m1s的字体是放在那个文件夹的?为什么我在主题风格上下载字体,有的字体不能显示?字体不全啊? 小米miui系统主题风格里面下载的字体文件在哪个文件夹 能不能找到发给别人 5G4G无线数据终端没有网