js全局和局部的作用域

js全局和局部的作用域,第1张

楼下说的不对吧!

首先:第一个,第一行定义了一个全局的var01,再在方法里定义了一个var01,首先搞清楚什么是var ,这是个变量声明关键字,他出现在哪和你全局不全局没有任何关系!

第一个之所以undefind是因为你将一个变量名定义两次,这个是不允许的,undefind在这里本质是声明错误,内存中不存在,即声明时发生错误,内存没有记录!不存在的东西js统一报错undefind!

第二个:输出1,是因为,js是脚本语言,在执行时按照顺序加载,当执行到write时,var01的值是1,此时还没执行到var01=0,这一步,所以先到先得,取出为1,然后在将var01赋值为0,但是此前js就已经输出了,所以0不会被输出!

关于全局和非全局,等你做久了你其实会发现,把全局叫做作用域会更好,他作用于谁,取决于你在何处声明(var关键字),比如你在页面的js第一行就写一个var var01,那这个var01就只作用于这个页面,那我是不是可以理解,所谓全局是整个程序,那我虽然定义了一个var,却不能延伸到整个程键肆槐序,那我是不是就可以推翻这个var看起来像全局,但在我的语境中其实并非全局,他只是我这个页面的全局,对于我整个程序来说,这个页面又是个局部!所以用作用域来解释会更好!

如果确实需要区分的话,那你可以这样理解

根据js 的执行顺序是逐行执行的特点,那么在js中,首先出现的var就是全雹羡局(顺带一提,function某种程度上等同var,再此与var并论!)所以简单理解就是,方法体外的var都是这个js的全局,方法体内的都是这个方法体的全局(你没听错,是这个方法体的全局!!!!!),但是,方法体是js 的全局,方法体内的var是方法的全局,而var var01的作用域又限定为方法体,所以,方法体内的var相对于js来说只能是局部.

其实这还漏了一个知识点:叫做,方法私有属性,即:方法体内定义的任何属性和方法都只归其父方法所有!!!!!

理解:某个页面的js文件理解为一个大方法,这个方法里又有其他方法,而子方法里的属性因为只归其父,所以父方法的父方法无权调用,父父方法若要调用只有通知其子方法,让子方法通稿友知其子属性并暴露给其父父方法!

但愿你听懂了,哈利路亚!自己都绕了

在小戚扰程序的其他JS文件中均可以使用全局的App(OBJECT)方法获取小程序实例。js文件是比较特殊的,它是微信小程序的入口文件,掌脊陵控整个小程序的生命周期,同时有一些全樱仔戚局的属性、变量也存放在这个文件中。

微信小程序本雀备作用域下调用全局JS详顷闷毁解

本地wxml文罩衫件

?

1

2

3

<view>

app版本:{{version}}

</view>

本地js文件

?

1

2

3

4

5

6

7

8

9

10

11

12

var app

Page({

data:{

},

onLoad:function() {

app = getApp()

this.setData({version:app.globalData.appName})

}

})

全局js文件

?

1

2

3

4

5

6

7

8

9

//app.js

App({

globalData:{

appName:"hcoder"

},

test:function () {

console.log("ok")

}

})


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12282049.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存