JS学习笔记(三)函数

js函数的声明方式为 

  function 函数名(参数列表) {
      // 函数体
      return 返回值;
  } 

  调用 函数名();

(js中花括号喜欢用这种方式,因为在以前的浏览器中会在每行js代码的末尾添加分号,但现在的浏览器一般已经兼容这种写法,但仍保留这种习惯。)

  需要注意的是只有在js的函数中声明的对象才具有块级作用域。函数中变量一定要定义,否则就是全局变量。

  在解释js的时候,会先将其读入内存进行解释,再一步一步的从上到下的执行代码。js的函数也是变量值,即可以把函数赋值给变量。

 1   function func1 () {
 2   // 代码体
 3   }
 4   var myFunc;
 5   myFunc = func1;
 6   //直接使用myFunc代替func1
 7   //或者
 8   var func = function() {
 9   // 这是一个Lambda函数,也称为匿名函数
10   };
11   func();

  如果函数中声明的变量名或函数名和对应全局的变量名或函数名一致,则会覆盖全局对象。

调试
  js只能在浏览器中进行调试,如使在FireFox浏览器中安装firebug插件进行调试,而chorme可直接右键选项进行调试。

构造函数

  在js中没有类的概念,但是有函数,函数可以作为构造函数来使用

使用方法
  声明一个函数(构造函数) new 的方式创建对象,模拟类的样子进行创建

 1   function Person(n, a, s) {
 2   // 如果需要为对象添加属性(字段)
 3   // 使用 this.属性名 = 值
 4   this.name = n;
 5   this.age = a;
 6   this.sex = s;
 7   this.say = function() {
 8         alert("我是" + this.name);
 9        };
10   }
11   // 当类来用
12   // 创建对象使用new 关键字
13   var p = new Person("杨洪波", 29, "女");
14   p.say();
15   alert(p.name);
16   alert(p.sex);
17   alert(p.age);
时间: 2024-11-08 02:48:57

JS学习笔记(三)函数的相关文章

JS学习笔记3_函数表达式

1.函数表达式与函数声明的区别 函数声明有“提升”(hoisting)的特性,而函数表达式没有.也就是说,函数声明会在加载代码时被预先加载到context中,而函数表达式只有在执行表达式语句时才会被加载 2.闭包 有权访问另一个函数作用域中的变量的函数.闭包可以访问另一个作用域中的变量,因此闭包得到的变量值是最终值,而不是该变量在某一时刻的值,有一个很经典的例子: function createFuns(){ var result = new Array(); for(var i = 0;i <

js学习笔记04-ES6函数(箭头函数与this),class

箭头函数 让简短单行函数更容易编写和阅读的普通函数可以是函数声明或函数表达式,但是箭头函数始终是表达式普通函数(把名字转换为大写) const upperNames = ['Fish', 'RedHands', 'Sugarbeans'].map(function(name) { return name.toUpperCase(); }); 将函数转换为箭头函数,函数主体只有一个表达式,简写主体语法1)删掉关键字 function2)删掉圆括号3)删掉左右花括号4)删掉关键字 return5)删

【Node.js学习笔记三】什么是Node封装模块?(Node Packaged Module.module)

Node封装模块是一个打包的库,它可以很容易的在不同的项目中被共享.重用和安装. 有很多可用于多种用途的不同模块. 例如: Mongoose模块为MongoDB提供了一个ODM Express扩展了Node的HTTP功能 Node.js模块由不同的第三方机构创建,提供现有Node.js所缺乏的重要功能. 每个Node封装模块包含一个 package.json文件,该文件包含元素数据信息,如: 名称 版本 作者 贡献者 以及控制元数据,比如依赖和执行诸如安装与发布动作时,Node包管理器将使用的其

Silverlight动画学习笔记(三):缓动函数

(一)定义: 缓动函数:可以将自定义算术公式应用于动画 (二)为什么要用缓动函数: 您可能希望某一对象逼真地弹回或其行为像弹簧一样.您可以使用关键帧动画甚至 From/To/By 动画来大致模拟这些效果,但可能需要执行大量的工作,并且与使用算术公式相比动画的精确性将降低. (三)实例讲解: 1 <UserControl x:Class="AnimationStudy.EasingFunctionAnimation" 2 xmlns="http://schemas.mic

JavaScript--基于对象的脚本语言学习笔记(三)

事件处理器 1.一个数据校验表单的例程 <html> <head> <title>js练习</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <script type="text/javascript"> String.prototype.trim=function(){ r

JS学习笔记-OO疑问之对象创建

问一.引入工厂,解决重复代码 前面已经提到,JS中创建对象的方法,不难发现,基本的创建方法中,创建一个对象还算简单,如果创建多个类似的对象的话就会产生大量重复的代码. 解决:工厂模式方法(添加一个专门创建对象的方法,传入参数避免重复) function createObject(name,age){ var obj =new Object(); //创建对象 obj.name = name; obj.age = age; obj.run = function(){ return this.nam

js学习笔记知识点

AJAX用法安全限制JSONPCORS面向对象编程创建对象构造函数原型继承class继承 AJAX 用法 AJAX不是JavaScript的规范,它只是一个哥们"发明"的缩写:Asynchronous JavaScript and XML,意思就是用JavaScript执行异步网络请求 在现代浏览器上写AJAX主要依靠XMLHttpRequest对象: 'use strict'; function success(text) { var textarea = document.getE

angular学习笔记(三十)-指令(5)-link

这篇主要介绍angular指令中的link属性: link:function(scope,iEle,iAttrs,ctrl,linker){ .... } link属性值为一个函数,这个函数有五个参数:scope,iEle,iAttrs,ctrl,linker scope:指令所在的作用域,这个scope和指令定义的scope是一致的.至于指令的scope,会在讲解scope属性的时候详细解释 iEle:指令元素的jqLite封装.(也就是说iEle可以调用angular封装的简版jq的方法和属

angular学习笔记(三十)-指令(6)-transclude()方法(又称linker()方法)-模拟ng-repeat指令

在angular学习笔记(三十)-指令(4)-transclude文章的末尾提到了,如果在指令中需要反复使用被嵌套的那一坨,需要使用transclude()方法. 在angular学习笔记(三十)-指令(5)-link文章也提到了link函数的第五个参数linker. 这篇文章就来讲解一下transclude()方法(linker()方法),是怎么使用的,另外,它也是compile函数的第三个参数,用法一样. 下面就通过自己写一个简易的模拟ngRepeat的指令cbRepeat,来了解linke

js学习笔记——数组方法

join() 把数组中所有元素转化为字符串并连接起来,并返回该字符串, var arr=[1,2,3]; var str=arr.join("#"); //str="1#2#3"; 如果没有指定分隔符,则默认为逗号 var str2=arr.join(); //str2="1,2,3"; reverse() 在原数组上把元素的顺序颠倒过来,并返回该数组 var arr=[1,2,3]; arr.reverse(); //arr=[3,2,1];