- 浏览: 59222 次
- 性别:
- 来自: 重庆
-
文章分类
最新评论
一般来说js全局变量分为显式定义和隐式定义,分别是加var和不加var的区别,试了试发现在实际创建中两者还是有区别的,自己不太懂底层,所以只能凭代码运行说话了。
代码一
显式的定义了param1 param2,zs则是隐式的定义,前面for是循环出window里所有的变量
以上代码运行出来是
param1 undefined
param2 undefined
obj [object Window]
func function func(){ zs="111"; alert(zs); }
zs 111
可以看出虽然代码里param1,param2,func都是在for循环下创建的,但是实际在window里已经把param1和param2定义好了,由此可见js会不论前面带var的变量放到哪个位置,都会按照先后顺序先在顶上创建好,但是未赋值。而函数同样也定义到顶上,以上代码实际定义大概类似于下面
但是如果去掉代码一里param1和param2前的var再运行,alert(param1)则会直接报错,提示param1 is not defined,没定义,所以如果隐式创建,则必须运行到变量所在创建位置才会创建这个变量
另外如果去掉代码一里的func();则zs这个全局函数是不会被创建的。可见js里全局变量是可以被动态创建的
同理var func=function(){....}的时候,会先创建一个叫func值为undefined的变量,当运行到赋值的时候才把函数赋给func,所以如果代码一中改成这种方式,在上面运行func()同样会报错,但function func(){}则不会报错。function前置的定义函数方式不论在js哪个地方定义,都能执行到。
关于<script></script>域的运作方式是:是执行完一个<script></script>中的代码再执行下一个<script></script>中的代码,这样上面
如果写成这样就会报错不执行了
代码一
func();//正确执行 alert(param1);//undefined var obj=window; for(o in obj){ if(o!='external'){ $("div").append(o+" "+obj[o]+"</br>"); } } var param1=100; var param2=[]; function func(){ zs="111"; alert(zs); }
显式的定义了param1 param2,zs则是隐式的定义,前面for是循环出window里所有的变量
以上代码运行出来是
param1 undefined
param2 undefined
obj [object Window]
func function func(){ zs="111"; alert(zs); }
zs 111
可以看出虽然代码里param1,param2,func都是在for循环下创建的,但是实际在window里已经把param1和param2定义好了,由此可见js会不论前面带var的变量放到哪个位置,都会按照先后顺序先在顶上创建好,但是未赋值。而函数同样也定义到顶上,以上代码实际定义大概类似于下面
var param1,param2,obj; function func(){ zs="111"; alert(zs); } func(); alert(param1); obj=window; for(o in obj){ if(o!='external'){ $("div").append(o+" "+obj[o]+"</br>"); } } param1=100; param2=[];
但是如果去掉代码一里param1和param2前的var再运行,alert(param1)则会直接报错,提示param1 is not defined,没定义,所以如果隐式创建,则必须运行到变量所在创建位置才会创建这个变量
另外如果去掉代码一里的func();则zs这个全局函数是不会被创建的。可见js里全局变量是可以被动态创建的
同理var func=function(){....}的时候,会先创建一个叫func值为undefined的变量,当运行到赋值的时候才把函数赋给func,所以如果代码一中改成这种方式,在上面运行func()同样会报错,但function func(){}则不会报错。function前置的定义函数方式不论在js哪个地方定义,都能执行到。
关于<script></script>域的运作方式是:是执行完一个<script></script>中的代码再执行下一个<script></script>中的代码,这样上面
func() function func(){}
如果写成这样就会报错不执行了
<script> func() </script> <script> function func(){} </script>。
发表评论
-
js this
2013-10-24 16:06 570js里this是指向的调用的引用对象 function t ... -
JS作用域
2013-10-24 14:11 560首先js是没有块级作用 ... -
js ++ --
2013-10-18 15:57 596前置++和--是马上执行运算 后置++和--简单点说就是当下一 ... -
关于闭包,自己理解的
2013-10-17 14:09 807其实一直没搞懂闭包啥 ... -
连续定义方法
2013-10-16 18:07 659var newFunc={}; var strs=" ... -
with
2013-10-16 14:38 521记录下,免得又忘记了 var defaultValue={ ... -
Myeclipse的jquery插件jqueryWTP安装
2013-10-12 22:05 784下载插件 jqueryWTP1.20foCN.jar 地址: ... -
aptana3安装jquery插件的两种方式
2013-10-12 11:29 1004总结了下貌似现在只有两种,其实都是用的同一个jquery开发插 ... -
jQuery的.bind()、.live()和.delegate()之间区别
2013-10-11 14:59 595原文:The Difference Between ... -
通过JS函数自动获取表单元素值的方法(转)
2013-09-16 17:26 1005做ajax提交懒得组合字符串,在网上找有没自动获取表单方法,找 ... -
jquery小东西记录(3)-选择器,通配符等
2013-08-13 11:24 6141.选择器 (1)通配符: $("input ... -
javascript小东西记录
2013-07-05 17:45 701onload几种方式 window.onload=XXXX;( ... -
jquery小东西记录(2) --jquery和dom对象转换
2013-07-05 11:37 596jQuery对象转成DOM对象: 两种转换方式将一个jQue ... -
js简单的表格操作
2013-06-21 15:43 1171好久没写表格操作全忘了,看别人的看不懂,所以只有自己写个,没有 ... -
慢慢收集javascript的使用方法
2013-06-06 11:22 714子窗体改变父窗体值 parent.document.getEl ... -
jquery小东西记录(1)
2013-05-12 23:45 792$(function(){}); $(document).r ... -
select标签的操作
2010-05-20 15:33 934功能为:添加 批量添加 删除 选定后背景变色 删除后背景色变回 ... -
主副窗口传值
2009-07-14 17:19 868主窗体 <html> <head&g ... -
javascript:无聊时写的一个自动获取json值并自动生成表格,可设置表格的列标题与要表现json值的位置
2009-07-12 14:50 2150function test(){ var file ...
相关推荐
标题中的“写的一个静态网站随便写的”表明这是一个关于创建静态网站的主题。静态网站是指由HTML、CSS和JavaScript等静态文件组成,不包含服务器端动态脚本的网站。这些网站的内容在用户请求时不会改变,而是预先...
比如说网站服务器地址,从后台拿到的:用户的登录token,用户的地址信息等,这时候就需要设置一波全局变量和全局函数,这两个设置不太难,而且有一些共通之处,可能有一些朋友对此不太了解,所以随便写出来分享一波。...
- 变量声明:JavaScript 使用 `var`, `let`, `const` 关键字声明变量,其中 `let` 和 `const` 是 ES6(ECMAScript 2015)引入的新特性。 - 数据类型:JavaScript 是弱类型语言,有七种基本数据类型,包括 `null`, ...
7.15 首字母大小写的变化 184 7.16 状态栏文字飞出效果 186 7.17 链接文字的滚动效果 188 7.18 不停变色的文字 189 7.19 文字颜色变化的显示效果 190 7.20 选中文本框中的全部文字 192 7.21 按钮上的滚动文字 ...
所谓的作用域,可以简单理解为一个可以读、写的范围(区域),有些js经验的同学可能会说:”js没有块级作用域”,js除了全局作用域外,只有函数可以创建作用域。作用域的一个好处就是可以隔离变量。 我们通过一些例子来...
- `IsFireFox`变量用于判断当前浏览器是否为Firefox,以便适配不同的事件处理方式。 - 只有当输入框类型为文本、密码、单选按钮或下拉列表时才生效。 ##### 3. Ajax请求处理 ```javascript // Ajax请求处理 ...
在描述中提到的“函数名都是随便写的”,这表明开发者可能对命名规范还不太熟悉。在编程中,良好的命名习惯非常重要,因为它可以使代码更易读、易理解。函数名应该清晰地反映出其功能,如generateRandomNumbers或...
描述中的“随便写写的小东西,各位请笑纳~”表明这是一个作者随意创作的项目,可能用于学习、练习或分享目的。这种类型的代码通常不会有严格的工程标准,但可以提供一些基础的思路和方法,对于初学者来说,是个不错...
1. 函数参数作为数组传递:在JavaScript中,函数接收的参数并不是直接作为单独的变量,而是被组织成一个名为arguments的类数组对象中。这意味着无论你在调用函数时传递了多少参数,函数内部都通过这个arguments对象...
【描述】虽然描述中提到“随便都不知道怎么写 还要求我要写 真是的”,但我们可以从中推测,该压缩包的创建者可能没有提供详细的信息,或者他们对这个文件的内容不太熟悉。这可能意味着解压和使用这个文件需要一定的...
在描述部分提到的“我就随便写了一串数字而已”,这里暗示了随机字符串的生成。在实际开发中,随机字符串常常用于生成唯一标识符、密钥等场景。 **应用场景:** - **会话标识:** 在Web应用中,会话ID通常是由随机...
虽然作者表示这只是“随便写的一个”,但从代码实现来看,该示例还是具有一定的参考价值。接下来我们将深入分析这段代码,并对其背后的原理进行详细解读。 #### 三、代码实现与解析 ##### 1. HTML结构 ```html ...
稍后我会写更多,我可能应该进入设置##设置首先,我假设您以前从未使用过 Go,并且可能没有为 Go 设置工作区。 让我们来解决这个问题。 下面的链接介绍了编写 Go 代码的所有细节,包括工作区设置... ......但这是...
5. 初始化内容:`oFCKeditor.Value = '随便写点内容!'`,这里预设了编辑器的初始文本。 6. 创建编辑器:`oFCKeditor.Create()`,这一行代码将编辑器实例化并插入到HTML中,使其在页面上可见。 FCKeditor还支持很多...
9,视频窗口和歌词展示区摆放更加自由,变量一定义,上下随便选!10,全新引入面向网站管理员的分类和播放器使用用户的歌曲分类功能!让站长和用户管理自己的歌曲更加有条理!11,全面新加有媒体文件类型支持视频...
9,视频窗口和歌词展示区摆放更加自由,变量一定义,上下随便选!10,全新引入面向网站管理员的分类和播放器使用用户的歌曲分类功能!让站长和用户管理自己的歌曲更加有条理!11,全面新加有媒体文件类型支持视频...
9,视频窗口和歌词展示区摆放更加自由,变量一定义,上下随便选!10,全新引入面向网站管理员的分类和播放器使用用户的歌曲分类功能!让站长和用户管理自己的歌曲更加有条理!11,全面新加有媒体文件类型支持视频...
9,视频窗口和歌词展示区摆放更加自由,变量一定义,上下随便选!10,全新引入面向网站管理员的分类和播放器使用用户的歌曲分类功能!让站长和用户管理自己的歌曲更加有条理!11,全面新加有媒体文件类型支持视频...
9,视频窗口和歌词展示区摆放更加自由,变量一定义,上下随便选!10,全新引入面向网站管理员的分类和播放器使用用户的歌曲分类功能!让站长和用户管理自己的歌曲更加有条理!11,全面新加有媒体文件类型支持视频...
9,视频窗口和歌词展示区摆放更加自由,变量一定义,上下随便选!10,全新引入面向网站管理员的分类和播放器使用用户的歌曲分类功能!让站长和用户管理自己的歌曲更加有条理!11,全面新加有媒体文件类型支持视频...