javascript下function声明一些小结
function test(){
return 123;
}
显然这是一个函数声明,那下面的呢
var b=function(){return 123};
这个大家就怀疑了,好似不是声明,因为函数没有名字,只是一个匿名函数,好,再看
var b=function test(){return 123};
这个到底是不是函数声明呢,好象是,那我回答你"不是"
alert(test);
var b=function test(){return 123};
可以在非ie上面任何一个js实现去测试,会报告test未定义错误,那如果这样呢
var b=function test(){return 123};
alert(b);
alert(test);
会显示出function test(){...}这样的函数toString结果,可以第二个alert还是异常,为什么呢,也就是说这里function test(){return 123}不是声明,而是一个函数对象,把引用放到了b里面而已,所以不会象声明一样默认把函数对象绑定到test名字上,那为什么我不叫用ie测试呢,因为
alert(test);
var b=function test(){return 123};
ie会把函数显示出来,ie比较笨,不会区分单独的function声明和=右面的函数对象区别,另外ie甚至还支持function String.prototype.test(){...}这样的声明,可见ie的js bug还真不少了,难怪wilson不支持es4,非得搞一个es3.1出来呢,其实是自己的bug修正版
相关推荐
-
javascript下function声明一些小结
function test(){ return 123; } 显然这是一个函数声明,那下面的呢 var b=function(){return 123}; 这个大家就怀疑了,好似不是声明,因为函数没有名字,只是一个匿名函数,好,再看 var b=function test(){return 123}; 这个到底是不是函数声明呢,好象是,那我回答你"不是" alert(test); var b=function test(){return 123}; 可以在非ie上面任何一个js实现去测
-
javascript下for循环用法小结
我们最常用的一种是 for(循环变量初值;循环条件;递增值){语句;} 例 for(var x=0;x [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 下面说下其它的用法 (1)省略表达式1,这个时候应在for语句前给循环变量赋初值,注意其后的;不能省略 例: var x=0; for(;x [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] (2) 省略表达式2,也就是循环条件循环无终止进行,也就是表达式2始终为真. 例: for(var x=0;;x++) { d
-
JavaScript下申明对象的几种方法小结
1.var myObject = {} ; 2.function myObject() { .... } 3.var myObject = function(){} ; 对于后两种方法,我们还可以增加参数,这样就类似于一个带参数的构造器了. 例如: function myObject(msg) { alert(msg) ; } var newObject = new myObject('Hello,World!') ; var myObject = function(msg) { alert(m
-
javascript对象的相关操作小结
我们知道浏览器对象模型(BOM)是javascript的组成之一,它提供了独立于内容与浏览器窗口进行交互的对象.其分层结构如下: window对象是整个BOM的核心其有document(文档对象).location(地址对象) 和history(历史对象组成) 调用对象属性的语法: 1.对象.属性名="属性值"; 2.对象["属性名称字符串"]="属性值"; 调用对象方法的语法: 1.对象的方法名(); 2.对象["方法名称字符串&qu
-
JavaScript使用function定义对象并调用的方法
本文实例讲述了JavaScript使用function定义对象并调用的方法.分享给大家供大家参考.具体分析如下: JS中你可以通过函数的方式定义对象,下面的JS代码定义了一个movie的函数对象,然后通过new的方法声明对象,调用起来也非常简单. <script type="text/javascript"> function movie(title, director) { this.title = title; this.director = director; } v
-
JavaScript中变量声明有var和没var的区别示例介绍
本文来论述JavaScript中变量声明有var和没var的区别,关于Js中的变量声明的作用域是以函数为单位,所以我们经常见到避免全局变量污染的方法是 (function(){ // ... })(); 在函数内部,有var和没var声明的变量是不一样的.有var声明的是局部变量,没var的,声明的全局变量,所以可以借此向外暴露接口东东. 在全局作用域内声明变量时,有var 和没var看起来都一样,我们知道,声明的全局变量,就是window的属性,究竟是否一样,我们通过ECMAScrpit5提供
-
JavaScript lodash常见用法系列小结
lodash一开始是Underscore.js库的一个fork,因为和其他(Underscore.js的)贡献者意见相左.John-David Dalton的最初目标,是提供更多"一致的跨浏览器行为--,并改善性能".之后,该项目在现有成功的基础之上取得了更大的成果,并于一月份发布了3.0版本. 下面给大家说下javascript lodash知识,具体详情如下所示: 1 _.compact用法 _.compact([0, 1, false, 2, '', 3,'mm']); var
-
关于JavaScript中var声明变量作用域的推断
一.迷思!由一段代码引发的疑惑 请看如下代码: 复制代码 代码如下: for(var i=0;i<3;i++) { console.log(j+","+k); for(var j=0;j<3;j++) { var k = j+1; } } console.log(i); 输出结果: undefined,undefined 3,3 3,3 3 如果你是搞c.java等语言的,可能你会不解,为何j.k这种局部变量可以被作用域外的代码访问呢? 如果JavaScript中用var声
-
JavaScript的变量声明与声明提前用法实例分析
本文实例讲述了JavaScript的变量声明与声明提前用法.分享给大家供大家参考,具体如下: JavaScript的变量声明 JavaScript的变量声明语句无论出现在何处,都会先于其他代码首先被执行.使用var关键词声明变量的作用域是当前的执行上下文,有可能是外围函数,或者,当变量声明在函数体之外时,则为全局变量. 向一个未声明变量赋值会隐式地将其创建为一个全局变量(它变成了全局对象的一个属性).声明变量与未声明变量之间的区别为: 1. 声明变量的作用范围限定在其执行的上下文环境中.未声明的
-
了不起的11个JavaScript代码重构最佳实践小结
模式和重构之间有着一种与生俱来的关系.从某种角度来看,设计模式的目的就是为许多重构行为提供目标. 1.提炼函数 在JavaScript开发中,我们大部分时间都在与函数打交道,所以我们希望这些函数有着良好的命名,函数体内包含的逻辑清晰明了.如果一个函数过长,不得不加上若干注释才能让这个函数显得易读一些,那这些函数就很有必要进行重构. 如果在函数中有一段代码可以被独立出来,那我们最好把这些代码放进另外一个独立的函数中.这是一种很常见的优化工作,这样做的好处主要有以下几点. 避免出现超大函数. 独立出
随机推荐
- JavaScript 面向对象编程(1) 基础
- 看到一个JS正则的题
- php中使用Curl、socket、file_get_contents三种方法POST提交数据
- 基于php的微信公众平台开发入门实例
- php模拟post提交数据的方法
- MYSQL5 masterslave数据同步配置方法第1/3页
- jQuery与getJson结合的用法实例
- Android 使用SharePerference判断是否为第一次登陆的实现代码
- java 并发中的原子性与可视性实例详解
- java 获取日期的几天前,几个月前和几年前的实例
- C#的path.GetFullPath 获取上级目录实现方法
- php实现过滤表单提交中html标签的方法
- C++ 类的继承与派生实例详解
- VLAN可能带来灾难 如何避免
- mysql入门之1小时学会MySQL基础
- SpringBoot JS-SDK自定义微信分享的实现
- 在Laravel的Model层做数据缓存的实现
- 通过原生vue添加滚动加载更多功能
- AJAX+Servlet实现的数据处理显示功能示例
- android播放器实现歌词显示功能