JavaScript函数定义语法总结

时间:2024.5.13

JavaScript函数定义语法总结 作者 黄诚

QQ群:65643887

1.正常的定义方法:

function functionName([arguments]){

Javascript statements

[return expression]

}

例1:

function evalScript( i, elem ) {

if ( elem.src )

jQuery.ajax({

url: elem.src,

async: false,

dataType: "script"

});

else

jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" );

if ( elem.parentNode )

elem.parentNode.removeChild( elem );

}

2.匿名函数

上面的其中的functionName可以省略,成为匿名函数:

var func2 = function(…){…};

例1:

var max = function(a, b){

if(a>b) return a;

return b;

}

例2:

dojo.isString = function(/*anything*/ it){

//summary:

//Return true if it is a String

return !!arguments.length && it != null && (typeof it == "string" || it instanceof String);

// Boolean

}

例3:

function( selector, context ) {

// The jQuery object is actually just the init constructor 'enhanced'

return new jQuery.fn.init( selector, context );

}

3.匿名函数加默认参数

(function(){})();语法表示一个匿名函数的定义

例1:

var iii = (function(a,b){return a+b;})(1,2);

alert(iii);

后面的括号(1,2)表示创建完后立即进行这个函数调用。结果是弹出3。它的优点是在很长的代码段中进行模块化设计或者想避免命名冲突,这是一个不错的解决办法。

例2:

(function(){

var mp = dojo.config["modulePaths"];

if(mp){

for(var param in mp){

dojo.registerModulePath(param, mp[param]);

}

}

})();

4.大括号({})语法

JavaScript中的对象其实就是属性(方法)的一个集合,并没有严格意义上类的概念。所以它提供一个简单的方式类创建对应,即:

{

property1:statement,

property2:statement2,

propertyN:statementN

}

通过大括号括住多个属性或方法及其定义(这些属性或方法用逗号割开),来实现对象的定义,这段代码就直接定义个具有n个属性或方法的对象,其属性名和其定义之间用冒号(:)隔开。

例1:

this.dojo = {

_scopeName: "dojo",

_scopePrefix: "",

_scopePrefixArgs: "",

_scopeSuffix: "",

_scopeMap: {},

_scopeMapRev: {}

};

//调用dojo对象的属性scopeName

alert(dojo. scopeName);

例2:

jQuery.browser = {

version: (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1],

safari: /webkit/.test( userAgent ),

opera: /opera/.test( userAgent ),

msie: /msie/.test( userAgent ) && !/opera/.test( userAgent ),

mozilla: /mozilla/.test( userAgent ) && !/(compatible|webkit)/.test( userAgent ) };

5. new Function创建方式:

var funcName = new Function(p1, p2, …, pn, body);

参数的类型都是字符串,p1到pn表示所创建函数的参数名称列表,body表示所创建函数的函数体语句,funcName就是所创建函数的名称。

可以不指定任何参数创建一个空函数,不指定funcName创建一个无名函数,当然那样的函数没有任何意义。

例1:

下面的定义是等价的

var myFunction = new Function(“a”, “b”, “c”, “return a + b + c”);

var myFunction = new Function(“a, b, c”, “return a + b + c”);

var myFunction = new Function(“a, b”, “c”, “return a + b + c”);

函数里面使用大括号语法。

jQuery.extend(

{

noConflict: function( deep ) {

window.$ = _$;

if ( deep )

window.jQuery = _jQuery;

return jQuery;

}

}

);

解析。

jQuery首先定义了一个extend函数。

jQuery.extend= jQuery.fn.extend = function() {

// copy reference to target object

var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options;

// Handle a deep copy situation

if ( typeof target === "boolean" ) {

deep = target;

target = arguments[1] || {};

// skip the boolean and the target

i = 2;

}

...

};

而jQuery.extend({…});是构造了一个对象作为extend函数的参数进行调用。


第二篇:JavaScript语句代码总结


JavaScript语句代码

JavaScript内置对象和操作

数组的操作:

得到数组长度 var len = array.length;

将元素添加到数组开头:array.unshift(要添加的对象);

将元素添加到数组的末尾:array.push(要添加的对象);

删除数组第一个元素:array.shift();

删除数组最后一个元素:array.pop();

删除指定的元素:Array a = array.splice(起始索引,删除的个数);splice方法会将新的数组返回 得到数组片段:array.slice(起始索引,个数);

翻转数组:array.reverse();

将数组的元素连接array.join(“连接符”)(连接符不填的话默认为逗号,)

数组元素的排序array.sort();(由小到大)

字符串对象的操作:

获取字符串的长度:str.length;(length为属性,不是函数)

字符串的截取:str.stringsubstring(起始索引,位数-1)

字符串的替换:str.replace(“原始字符串”,”替换字符串”);

大小写转换:str.toLowerCase(); str.toUpperCase();

将字符串转换为数组:str.split(“分割符”)

数学运算:

小数取整:Math.ceil(小数)向上取整

Math.floor(小数)向下取整

得到随机数:var num = Math.random();

最大值var max = Math.max(num1,num2,num3…………)

最小值var min = Math.min(num1,num2,num3…………)

window对象属性及方法(window.可以省略)

显示提示信息:alert(提示信息);

弹出确认框:confirm(提示信息);

弹出输入框:prompt(提示信息);

窗口状态栏:window.status=”提示信息”

延迟执行:setTimeout(函数名,延迟时间)

定时循环执行:setInterval(函数名,间隔时间);

窗口状态栏:window.status=”提示信息”

setTimeout(函数名,延迟时间)

DOM对象操作

节点的引用:

通过ID获得节点引用:document.getElementBy(id)

通过name获得节点集合的引用:document.getElementsByName(name)

通过标签名获得节点集合的引用:document.getELementsByTagName(TagName)

引用父节点:node.getParentNode;

引用第一个子节点:node.firstChild

引用最后一个子节点:node.lastChild

引用全部子节点结合:node.childNodes

引用相邻的前一个节点:node.previousSibling

引用相邻的后一个节点:node.nextSibling

对节点的操作

创建元素节点: document.createElement(标签名)

创建文本节点:document.createTextNode(文本内容)

添加节点:node.appendChild(要添加的节点)

插入子节点: parent.insertBefore(需要插入的节点,要插入的当前节点)

替换子节点:node.replaceChild(新节点,被替换的节点)

复制节点:var cloneNode=node.cloneNode();

删除子节点:parentNode.removeChild(要删除的节点)

读取节点属性:node.getAttribute(属性名称)

添加或修改节点属性:node.setAttribute(属性名称,属性值)

删除节点的属性:node.removeAttribute(要删除的属性名称)

设置节点的html内容:node.innerHTML="html内容";

设置节点的文本内容:node.innerText="文本内容";

样式控制

设置节点的样式:node.className=样式名字

设置背景色:node.style.backgroundColor=”red”

设置文字颜色:node.style.color=”green”

设置相对或者绝对位置:node.style.position="p"

p=absolute(绝对)或者relative(相对)

设置元素的x坐标:node.style.left=距离+"px"

设置元素的y坐标:node.style.top=距离+"px"

设置元素的高度:node.style.height=高度+"px"

设置元素的宽度:node.style.width=宽度+"px"

添加事件处理(以下方法均用click作为例子,注意有的需要加on,有的不需要)

(1)在html代码内给元素内添加事件 : <input type=”button” onclick=”test()”/>

(2)通过给node的属性赋值来绑定事件 : node.onclick=函数名

(3)火狐的事件绑定,IE不支持:obj.addEventListener(click,处理函数名称,false); (不加on)

(4)IE的事件绑定,火狐不支持:obj.attachEvent(onclick, 处理函数名称)(加on)

注销事件处理

(1)node.onclick=null;

(2)obj.removeEventListener(click,处理函数名称,false);(FF支持,IE不支持)

(3)obj.detachEvent(onclick,处理函数名称);(IE支持,FF不支持)

兼容IE和FF的常用代码总结

(1)获取鼠标的x,y坐标(兼容IE和FF)

var mouseX= (document.body.scrollLeft||document.documentElement.scrollLeft)+evt.clientX; var mouseY = (document.body.scrollTop || document.documentElement.scrollTop) + evt.clientY;

(2)获取事件模型event(兼容IE和FF)

function getEvent(event){

} var evt = event || window.event;

(3)获取发出事件的源对象(兼容IE和FF)

function getTarget(event){

} var evt = event || window.event; var target = evt.target || evt.srcElement; alert(target.value);

(4)获取XMLHttpRequest对象(兼容IE和FF)

if(window.XMLHttpRequest){

} xmlhttp=new XMLHttpRequest(); xmlhttp=new ActiveXObject('Microsoft.XMLHTTP'); }else{

(5)通过ajax方式发送请求

if(xmlhttp){

xmlhttp.open("POST","Ajaxserver",true);设置请求方式,请求URI,是否异步 var parm=name+","+wish+","+color;设置发送参数 //设置发送的头信息 xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); xmlhttp.send("name=" + parm);发送参数

xmlhttp.onreadystatechange=callback;设置状态变化事件,callback为回调函数

}

function callback(){

} if(xmlhttp.readyState==4){ var result=xmlhttp.responseText;获得服务器返回的结果 }

更多相关推荐:
英学科工作总结语

小学英语学科工作总结赫章县双坪彝族苗族乡中心小学李海波在任职期内我担任英语教学。一直以来,我坚持党在新时期的教育方针,坚持以人为本,坚决服从学校领导和教务处的管理和领导,工作认真踏实,任劳任怨,不断求实创新,取…

高效学习法总结:语文学习的原因

高效学习法总结:语文学习的原因语文学科是一门基础学科,有助于学生学好其他学科,掌握语文学习的基本方法,养成自学语文的习惯,培养发现、探究、解决问题的能力,为继续学习打好基础。《学习科学》高效法通过运用世界脑力锦…

20xx年党员工作总结语文老师

20xx年党员工作总结繁忙而有意义的20xx年将要结束,一年来,无论是思想方面,还是工作、学习和生活方面,我都有了长足的进步,在自己的职业画卷上描绘了绚丽的一笔。下面我从思想、工作和生活方面加以总结:一、加强政…

专业技术工作总结(语文)

专业技术工作总结(语文)我是一位年轻的语文教师,由于教学经验尚浅,因此,我对教学工作不敢怠慢,认真学习,深入研究教法,虚心向前辈学习。经过几年的努力,获取了很多宝贵的教学经验。以下是我任中学一级教师以来的教学情…

12-13学年度下册一年级品德与生活教学工作总结(语言文字)

创建“东莞市语言文字规范化示范校”资料20xx-20xx学年度第二学期东莞市茶山镇第三小学一年级品德与社会科教学工作总结光阴似箭,日月如梭。转眼间一学期又要过去了。这学期我承担了一年级品德与生活课的教育教学工作…

见习期专业技术工作总结(语文教学)

我于20xx年x月底通过特岗教师招考分配到汶上中学担任语文教学工作。一年的见习期即将结束。在这一年里,在各位领导和老师的热心支持和帮助下,我认真做好语文教学工作,积极完成学校布置的各项任务。下面我将把本人见习期…

教 学 工 作 总 结(语文)

教学工作总结刘哓龙“弹指一挥间”,紧张而忙碌的一个学期又结束了,蓦然回首这一学期走过的足迹,有太多值得总结的经验与教训,在心中涌动。本学期,我以邓小平理论和江泽民主席“三个代表”重要思想为指导,深入地学习《教师…

创业励志总结语段

《创业狼》精彩语段面对创业:选择最熟悉的行业才能事半功倍,聪明的人不是那些掌握知识多的人,而是会运用知识的人。人生就像一次长途旅行,为了到达终点,总要在不同地点换乘不同的车。很显然,陈莞生的这辆车,已到达不了他…

国培研修总结(语文)

小学语文远程研修总结今年参加远程教育培训学习,我观看名师的课堂实录和聆听专家精彩的教学点评与讲座。虽然学习的时间不长,但对研修却有不少的认识。在这一段时间里,通过对专家们专题的听课、交流、研讨,同时提交作业、发…

20xx年国培计划学习总结——语文篇

20xx年国培计划学习总结——语文篇广西来宾市武宣县学员:覃仲理今年,我有幸参加了国培计划的学习,从参加国培以来,我感悟很深,我想说:我们全体教师需要这样的引领,尤其是农村教师,学习机会太少,得到专业引领很难,…

于洪波教授培训的总结语录

于洪波教授培训的总结语录:1.生活中是一个项目接着一个项目。2.处理事方法:西方(法-理-情)是理性的,东方(情-理-法)是感性的。3.当你善于迟到时,实际上市恶狠狠的惩罚守时的人。4.股票:理想是丰满的,现实…

20xx年高考语文《〈论语〉选读》复习指导课件_ppt

20xx年高考语文论语选读复习指导课件ppt新高考新国学20xx05070824教材内容梳列第一课孔子的德政主张第二课孔子的礼治主张第四课孔子坚忍不拔的奋斗精神第五课孔子的人生价值观第六课道德修养的主要内容和要...

ppt总结语(92篇)