zoukankan      html  css  js  c++  java
  • javascript系列--函数(一)

    函数的定义和调用

    定义函数的方式包括以下两种

    第一种

    function abs(x) {
    				if(x >= 0) {
    					return x;
    				} else {
    					return -x;
    				}
    			}
    

    定义了一个方法名为abs,参数为x的函数

    第二种

    var abs=function(x){
    				if(x >= 0) {
    					return x;
    				} else {
    					return -x;
    				}
    			};
    

    定义了一个指向匿名函数的abs变量

    调用方式两者相同,都是采用abs(参数)来进行调用

    javascript函数中有一个内置的arguments,可以获取函数调用时输入的所有参数,但是arguments形式类似数组,但并不是数组

    function foo(x)
    			{
    				console.log(arguments); //输出  [10, 20, 30, callee: ƒ, Symbol(Symbol.iterator): ƒ]
    //				console.log(arguments.join('-'));//会报错
    			}
    			
    			foo(10,20,30);
    

    js的内置filter函数,通常用来删选数组

    //筛选出所有的奇数
    var arr = [1, 2, 4, 5, 6, 9, 10, 15];
    			var r = arr.filter(function(x) {
    				return x % 2 !== 0;
    			});
    			console.log(r);    //输出[1, 5, 9, 15]
    //删选掉所用的空字符串
    var arr = ['A', '', 'B', null, undefined, 'C', '  '];
    			var r = arr.filter(function(s) {
    				return s && s.trim(); // 注意:IE9以下的版本没有trim()方法
    			});
    			console.log(r);    //输出["A", "B", "C"]
    //去掉重复的元素
    var arr = ['apple', 'strawberry', 'banana', 'pear', 'apple', 'orange', 'orange', 'strawberry'];;
    			var r=arr.filter(function(element,index,self){
    				return self.indexOf(element)===index;
    			})
    			
    			console.log(r);    //输出["apple", "strawberry", "banana", "pear", "orange"]
    

    接下来讨论一个经常会用到的一个知识点 闭包

    闭包简单来说就是可以读取其他函数内部局部变量的函数,并且可以将变量保存在内存中
    缺点:滥用闭包会造成内存消耗很大,导致网络性能降低,其次会导致改变函数内部变量的值

    function f1(){
    //				var n=999;    //局部变量
    				n=999;        //全局变量
    			}
    			f1();
    //如果是定义局部变量,在函数外是访问不到的;如果是全局变量,在函数外是可以访问到的,闭包的作用就是解决在函数外访问局部变量的问题
    

    如何从外部访问到局部变量?

    function f1(){
    				var n=999;
    				
    				function f2(){
    					alert(n);
    				}
    				
    				return f2;
    			}
    			var result=f1();
    			result();
    

    在函数f1()f2()是可以访问到变量n的,因此将函数f2返回,就可以在f1外通过f2访问到变量n

    参考 阮一峰博客

  • 相关阅读:
    .Net 4.0新特性之Dynamic 动态类型(转载)
    三种提高Google Analytics效率的方法(转载)
    PowerBuilder 12使.NET的应用开发更快捷
    .Net 之匿名类(AnonymousType)(转载)
    ASP.NET MVC学习笔记一(转载)
    js动态获取虚拟目录名称 相当于服务端ResolveUrl("")方法(转载)
    CSS 备忘(转载)
    ASP.NET4与VS2010开发Ajax Library特征(转载)
    POJ1988 Cube Stacking
    HDU3694 Fermat Point in Quadrangle
  • 原文地址:https://www.cnblogs.com/elian/p/7676519.html
Copyright © 2011-2022 走看看