函数声明

JavaScript中声明函数的方式:(无需声明返回值类型)
function add(i1, i2) {
            return i1 + i2;//如果不写return返回的是undefined
        }
int add(int i1,int i2)//C#写法
不需要声明返回值类型、参数类型。函数定义以function开头。
        var r = add(1, 2);
        alert(r);
        r = add("你好", "tom");
        alert(r);
JavaScript中不像C#中那样要求所有路径都有返回值,没有返回值就是undefined。
易错:自定义函数名不要和js内置、dom内置方法重名,比如selectAll、focus等函数名不要用。//不要与系统函数重名。(在单击事件中调用自己定义的focus方法,有问题。与系统的focus()方法重名了)

函数声明时注意{ }的位置
推荐写法:
function fun(){
}
一般在js中编写大括号都是直接跟在后面而不要另起一行,比如:
return {Name:’yzk’,Age:18};而不要写成:
return
{
Name:’yzk’,
Age:18
}

原因是js会在语句末尾自动增加”分号”,如果将大括号另起一行,则return语句后自动增加“分号”后,返回值就变成了undefined了。

arguments对象
JavaScript中没有方法重载。
动态为方法传递参数,类似于.net中的params关键字作用
<script type="text/javascript">
        function myFunc() {
            for (var i = 0; i < arguments.length; i++) {
                document.write(arguments[i]);
                document.write('<br/>');
            }
        }
        myFunc('张三', 18, '李四', 19);
    </script>

匿名函数1(函数直接量function literal)
第一种:
var f1=function(p1,p2){ return p1+p2; };//将函数赋值给一个变量
alert(f1(1,3));
匿名函数没法调用,只能赋值给一个变量,由于是赋值语句,后面要加分号
应用:
///document.getElementById(‘btn’).onclick=function(){}

第二种(*):
(function(p1,p2){alert(p1+p2);})(20,30);

第三种:(*)
var m1=new Function(“p1”,”p2”,”p3”,”return p1+p2+p3”);
alert(m1(1,2,3));性能低eval
匿名函数知道即可,以后用到的时候就会发现它的好了。jQuery中大量用到了匿名函数。

匿名函数2
类似于C#中的匿名函数。
这种匿名函数的用法在jQuery中的非常多。
alert(function(i1, i2) { return i1 + i2; }(10,10));//直接声明一个匿名函数,立即使用。用匿名函数省得定义一个用一次就不用的函数,而且免了命名冲突的问题,js中没有命名空间的概念,因此很容易函数名字冲突。通过例子发现一旦命名冲突以最后声明的为准。尽量减少文件的字节数。
匿名函数的使用,在后续的学习中会有使用。

JS面向对象基础1(*)
1.函数就是对象,对象就是函数。【当函数作为对象时,每个单词首字母都大写】
方法直接调用为函数,用new调用为对象。

2.由于js是动态语言所以创建对象的最直接的方式:
var obj=new Object();
obj.name=‘aa’;
obj.age=18;//要什么加什么。但是都是object类型。无法区分不同类型。

3.Example(写一个Person对象):
function Person()  {   }   //ok,就这么简单。

4.如何使用Perosn对象?
var p=new Person();// “var p”  不是   “Person p”。
p.Name=‘张三’;//动态语言,所以可以直接写。
p.Age=30;
p.SayHello=function() { alert(‘Hi~’); }
alert(p.Name);
alert(p[‘Age’]);//另外一种动态访问属性的方式。

JS面向对象基础2(*)
JavaScript同样支持this关键字
构建一个带参数的Person对象。通过this关键字为对象的属性赋值。
function Person(name, age) {
            this.Name = name;
            this.Age = age;
            this.ShowInfo = function() {
            alert('大家好,我叫' + this.Name + ',今年' + this.Age + '岁了。');     }}
var zjl = new Person('周杰伦', 20);
zjl.ShowInfo();
function Person(name,age)可以看做是声明构造函数,Name、Age这些属性也是使用者动态添加了。【var p1 = Person(“周杰伦", 20);//不要丢了new,否则就变成调用函数了,p1为undefined。】new 相当于创建了函数的一个实例。

JavaScript基础精华02(函数声明,arguments对象,匿名函数,JS面向对象基础)的更多相关文章

  1. JS执行顺序-函数声明提升、匿名函数、函数表达式

    大方向上: JS 是按照 代码块 进行 编译.执行 的. 学习至: 1.变量声明提升 2.新唐的博客 3.js中匿名函数的创建与调用方法分析 4.前端圣经 - <高程三> 5.深入理解变量 ...

  2. JavaScript学习总结(三、函数声明和表达式、this、闭包和引用、arguments对象、函数间传递参数)

    一.函数声明和表达式 函数声明: function test() {}; test();    //运行正常 function test() {}; 函数表达式: var test = functio ...

  3. 第4天:function对象(案例:获取当前日期属于当年第几天、arguments对象、函数类型、参数、返回值、自身调用)

    获取当前日期输入当年第几天 //输入,年月日,获取这个日期是这一年的第几天 //年-月--日:20171月31日 function getDay(year,month,day){ //定义变量存储对应 ...

  4. ES6教程-字符串,函数的参数,了解函数的arguments对象,js面向对象,设计模式-单例模式,解构赋值

    前言 主要讲解了ES6对字符串的拓展,包括includes,startsWith和endsWith,另外增加了字符串模板. Start includes()是否包含 startsWith()以什么开头 ...

  5. 函数的arguments对象的使用和介绍

    arguments对象用于函数,当不知道传递了多少个实参,就可以使用arguments对象进行存储传递过来的实参(这时不需要写形参). arguments是一个内置对象,也是一个伪数组,我们可以按照数 ...

  6. JS函数 -- 功能,语法,返回值,匿名函数,自调用匿名函数,全局变量与局部变量,arguments的使用

    “JavaScript设计得最出色的就是它的函数的实现.” -- <JavaScript语言精粹> 函数包含一组语句,它们是JS的基础模块单元,用于指定对象的行为.一般来说,所谓编程,就是 ...

  7. JS 函数(arguments、箭头函数、bind)

    参数 函数内部可用的 arguments 对象来访问函数的实参 注意 在函数递归调用的时候(在某一刻同一个函数运行了多次,也就是有多套实参),那么 arguments 属性的值是最近一次该函数调用时传 ...

  8. 洗礼灵魂,修炼python(24)--自定义函数(5)—匿名函数lambda

    在这个互联网时代,大家都喜欢匿名,匿名上网,匿名登录,匿名操作等等,都不喜欢实名对吧?(虽然说现在实名制已经快到来,题外话,扯远了),当然python里也有个不喜欢实名的,它的功效优点特殊,说强大吧? ...

  9. js闭包(函数内部嵌套一个匿名函数:这个匿名函数可将所在函数的局部变量常驻内存)

    js闭包(函数内部嵌套一个匿名函数:这个匿名函数可将所在函数的局部变量常驻内存) 一.总结 1.闭包:就是在一个函数内部嵌套一个匿名函数,这个匿名函数可以访问这个函数的变量. 二.要点 闭包 闭包的相 ...

随机推荐

  1. cookie文件在电脑的保存位置

    在Windows系统上(这里以Win7为例)浏览器的Cookie IE浏览器Cookie数据位于:%APPDATA%\Microsoft\Windows\Cookies\ 目录中的xxx.txt文件 ...

  2. trade 1.0 开源工具

    dapper.net T4PocoGenerator/ Dapper.ColumnMapper 参考链接: http://blog.csdn.net/ymnets/article/details/85 ...

  3. KMP算法的理解

    ---恢复内容开始--- 在看数据结构的串的讲解的时候,讲到了KMP算法——一个经典的字符串匹配的算法,具体背景自行百度之,是一个很牛的图灵奖得主和他的学生提出的. 一开始看算法的时候很困惑,但是算法 ...

  4. 简单的Datatable转List,Json

    这里用到了Newtonsoft.Json,下载地址:http://json.codeplex.com/ 1.根据不同的Model转为对应的List public static List<Mode ...

  5. python之内置类型: 序列, 字典

    序列: 元素之类有序的类型. Python 2.x支持6种内置序列: list, tuple, string, ustring, buffer, xrange (1)序列的定义: list: [] t ...

  6. 开发一个iOS应用没有那么容易

    导读:这是来自新加坡的 iOS 开发者 Kent Nguyen 发表在1月底的一篇博文.这篇吐槽文在 iOS 开发圈子里流传甚广,从原文150多个评论就可见一斑,现翻译如下. 让我们开门见山吧:做一个 ...

  7. 使用JAXP进行sax解析

    package cn.liuning.sax; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactor ...

  8. 最火的.NET开源项目(转)

    综合类 微软企业库 微软官方出品,是为了协助开发商解决企业级应用开发过程中所面临的一系列共性的问题, 如安全(Security).日志(Logging).数据访问(Data Access).配置管理( ...

  9. UAP如何根据DeviceFamily显示不同的页面

    背景 微软推出UAP 推荐使用响应式的UI,但是难免遇到一些特殊情况需要使用不同的Page来在不同的设备显示. 微软目前最新的VS2015在10074上安装后能够支持这个功能特性,只是暂时没有文档介绍 ...

  10. 在服务器操作系统上使用TeamViewer

    TeamViewer对于个人或非商业用途提供免费许可证,可以永久使用.但对于公司或商业用途则只提供7天试用期,试用期结束后则不能再使用. 在Windows XP等非服务器操作系统上安装TeamView ...