在函数内部,有两个特殊的对象:argumengs和this 1.函数的参数 ECMAScript函数不介意传递进来多少个参数,也不在乎传进来的参数是什么数据类型,也就是说:你定义的函数只接收2个参数,在调用这个函数时也未必一定要传递2个参数,可以传递一个.三个甚至不传递参数,之所以会这样,是因为ECMAScript中的参数在内部是用一个数组来表示的.函数接收到的永远是这个数组,而不关心数组中包含哪些参数.在函数体内的话可以通过argumengs对象来访问这个参数数组,从而获取传递给函数的每一个参…
函数内部属性 函数内部有两个特殊的属性arguments和this.其中,arguments是类数组对象,包含传入函数中的所有值,这个arguments还有一个属性:callee,这个属性是一个指针,指向拥有arguments的函数.而this据以引用的是函数执行环境对象. function fib(n){ if(n = 1){ return 1; }else{ return n * arguments.callee(n - 1); } } //这里利用函数内arguments的callees属…
<script type="text/javascript"> //在函数内部有两个特殊的属性:arguments 和 this.arguments是一个类数组对象,包含传入的所有参数, //但是这个对象还有一个名叫callee的属性,该属性是一个指针,指向拥有这个arguments对象的函数. //请看经典的阶乘函数例子: function Factorial(num) { if (num <= 1) { return 1; } else { return num…
在函数内部,有两个特殊的对象:arguments和this. 1.arguments arguments是一个类数组对象.包含着传入函数中的所有参数.但这个对象还有一个名叫callee的属性,该属性是一个指针,指向拥有这个arguments对象的函数. 经典案例:阶乘函数 function factorial(num){ if(num <= 1){ return 1; }else{ return num * factorial(num-1); } } 定义阶乘函数一般都要用到递归算法,如上所示,…
math函数的属性 Math.PI:返回圆周率. math函数的方法 绝对值: Math.abs(); 对数进行上舍入: Math.ceil(); 对数进行下舍入: Math.floor(); Math.pow(x, y); x的y次幂,y可以是分数 求最大最小值:Math.max();和Math.min(); max和min方法中可以有多个值. 随机数: Math.random(); 随生成一个0到1之间的随机数,包含0,不包含1 // 打印20到60之间的随机数 var random = p…
知识点:arguments和this对象.caller属性.apply()和call()方法     arguments对象:函数内部对象,传入函数中所有参数的集合,类数组对象 属性:callee 指针,指向拥有这个arguments对象的函数  作用:解耦 例子:迭代 function factorial(num) { if(num<=1){ return 1; }else{ return ( num*arguments.callee(num-1)); } } console.log(fact…
1.arguments 是在function方法里面的,是实参数组,用法是挺多的,下面来记录一下 2.利用arguments实现方法的重载 //01.使用argument模拟方法重载 function sayHi() { ) { alert(arguments[]); } ){ alert(arguments[]+arguments[]); } } 3.arguments  的callee属性: 是一个指针,说白了就是当前函数对象的指针 案例:(阶乘函数) function getFac(num…
前言:在javascript中我们会经常碰到this,然后this经常出现在function方法里面,有时候可能因为代码很多,无法判断this指向的是谁,其实很简单,一句话总结:谁点出这个this,这个this就是指向谁 案例:献上一个简简单单的案例,希望能帮助到大家,也方便我以后及时的查看 window.color = "blue"; var o = { color: "red" }; function sayColor() { alert( this.color…
1.arguments.callee //经典的阶乘(递归)函数 function factorial(num) { if (num <= 1) { return 1; } else { return num * factorial(num - 1); } } //消除函数名的耦合现象 function factorial(num) { if (num <= 1) { return 1; } else { return num * arguments.callee(num - 1);//函数内…
1.Math函数与属性使用语法 Math.方法名(参数1,参数2,...); Math.属性; 说明 Math函数可以没有参数,比如Math.random()函数,或有多个参数,比如Math.max()函数 Math的相关函数全部为静态函数,应该直接调用. JavaScript中Math函数和属性非常多,下面按功能分类分别列出常用的几种 Math三角函数与属性 Math.sin() -- 返回数字的正弦值 Math.cos() -- 返回数字的余弦值 Math.tan() -- 返回数字的正切值…
Function类型 首先得知道,每个函数都是Function类型的实例,所以函数本身是对象. 示例1: function sum (num1, num2){ return sum1 + sum2; } 示例2: var sum = function(num1, num2){ return num1 + num2; } 本质上这两种定义函数的方式没什么差别.因为函数名实际上也是一个指向函数对象的指针,不会与某个函数绑定. 定义一个函数可以理解为:函数名是变量,函数是对象,函数名是指向函数的指针,…
前两次总结了JavaScript中的基本数据类型(值类型<引用类型>,引用类型<复杂值>)以及他们在内存中的存储,对内存空间有了一个简单的了解,以及第二次总结了this深入浅出的用法,我们知道了this的用法取决于函数四种调用的方式. 这一次我们来对JavaScript中原型以及原型链做一个深入浅出的理解. JavaScript深入浅出系列 1)复杂值vs原始值&&内存空间 - JavaScript深入浅出(一) 2)this的用法 – JavaScript深入浅出…
JavaScript函数内部修改全局变量的问题 今天 10:44梵天莲华 | 浏览 23 次  Javascript编程语言函数 修改标签 代码如下,为什么加了 function a(){};这个函数,就不能改变全局变量a的值了? var a = 1; function b(){ a = 2; console.log(a); //有函数,a不变:没函数,a变2 function a(){}; } b();//输出2 console.log(a);//输出1   今天 11:07   提问者采纳…
函数在Javascript里是有属性的,因为它们是一种特殊对象.事实上,就算是没有明确声明,函数在最初就已经包含了一些固有的属性,比如所有函数都length这个属性,它可以指出函数声明了多少个参数: function func(a, b, c) {} console.log(func.length); // 3   你 可以随时使用函数的属性.其中一个函数属性的用法是,把函数的返回值保存起来,方便下次执行时再使用,这就是函数的记忆模式.比如,下面的函数myFun 就声明了一个叫cache的属性,…
JS:客户端(浏览器)脚本语言 弱类型 基于原型 事件驱动 不需要编译(直接运行)   JS的作用:表单验证,减轻服务端的压力 添加页面动画效果  动态更改页面内容  Ajax网络请求 (一)常见的对话框              alert()对话框:该方法是window对象的方法,在浏览器中弹出一个对话框(该方法没有返回值)  prompt()对话框:2个参数,一个是浏览器提示信息,第二个是默认的输入框的值,返回值就是输入框的信息  confirm()对话框:在浏览器弹出一个对话框,用户只能…
Javascript入门易,精通难,基本上是共识的一个观点.在这个篇幅里,主要对一些难点进行记录. 鸭子类型 Javascript属于动态类型语言的一种.对变量类型的宽容,给了很大的灵活性.由于无需类型检测,则无需考虑他是否被设计拥有该方法. 鸭子类型通俗说法:如果它走起路来像鸭子,叫起来也是鸭子,那么他就是鸭子 鸭子类型指导我们只关注对象的行为,而不关注对象本身.关注HAS-A 而不是 IS-A. 如下例子,不管什么动物,只要他会duckSinging,并且是方法,就可以加入. var duc…
在JavaScript中,函数是个非常重要的对象,函数通常有三种表现形式:函数声明,函数表达式和函数构造器创建的函数. 本文中主要看看函数表达式及其相关的知识点. 函数表达式 首先,看看函数表达式的表现形式,函数表达式(Function Expression, FE)有下面四个特点: 在代码中须出现在表达式的位置 有可选的函数名称 不会影响变量对象(VO) 在代码执行阶段创建 下面就通过一些例子来看看函数表达式的这四个特点. FE特点分析 例子一:在下面代码中,"add"是一个函数对象…
整理了JavaScript中函数Function的各种,感觉函数就是一大对象啊,各种知识点都能牵扯进来,不单单是 Function 这个本身原生的引用类型的各种用法,还包含执行环境,作用域,闭包,上下文,私有变量等知识点的深入理解. 函数中的return return 语句可以不带有任何返回值,在这种情况下( return; 或函数中不含 return 语句时),函数在停止执行后将返回 undefiend 值.这种用法一般在需要提前停止函数执行而又不需要返回值的情况下. return false…
什么是函数 函数,是一个大型程序中的某部份代码,由一个或多个语句块组成.它负责完成某项特定任务,而且相较于其他代码,具备相对的独立性.(维基百科) 函数的特点 第一类对象 在JavaScript世界中函数是一等公民,它不仅拥有一切传统函数的使用方式(声明和调用),而且可以做到像简单值一样赋值.传参.返回,这样的函数也称之为第一级函数(First-class Function).不仅如此,JavaScript中的函数还充当了类的构造函数的作用,同时又是一个Function类的实例(instance…
JavaScript知识点(一)包括 数据类型.表达式和运算符.语句.对象.数组. 一.数据类型 1) js中6种数据类型:弱类型特性 5种原始类型:number(数字).string(字符串).boolean(布尔值).null .undefined 1种对象类型:object对象(函数function 数组array 日期Date等) 2)数字转换字符串可以的+"",字符串转换数字可以-0 例:var num = 32; num = "this is a string&q…
函数本身就是一段JavaScript代码,定义一次但可能被调用任意次.如果函数挂载在一个对象上,作为对象的一个属性,通常这种函数被称作对象的方法.用于初始化一个新创建的对象的函数被称作构造函数. 相对于其他面向对象语言,在JavaScript中的函数是特殊的,函数即是对象.JavaScript可以把函数赋值给变量,或者作为参数传递给其他函数,甚至可以给它们设置属性等. JavaScript的函数可以嵌套在其他函数中定义,这样定义的函数就可以访问它们外层函数中的任何变量.这也就是所谓的"闭包&qu…
在JavaScript中,函数也是一种数据类型,属于 function 类型,所以使用Function关键字标识函数名.函数可以在大括号内编写代码并且被调用,作为其他函数的参数或者对象的属性值. 1.命名函数的创建和使用 <script type="text/javascript"> function 函数名 (形参列表) { //执行语句 return 返回值; } </script> 2.函数的参数和返回值 与C#,java等语言相比,JavaScript函…
Day 01 1.Javascript 概述 1.什么是Javascript (JS) Javascript 是一种运行于 JS解释器/引擎 中的解释型脚本语言 JS解释器/引擎 :JS运行环境 1.独立安装的解释器 NodeJS 2.浏览器内核中嵌入的JS解释器 PC机,手机,平板,电视 .... 解释性脚本语言: 解释型:运行之前不会编译 编译型:运行之前先编译  C,C++ ... 2.JS的发展史 1.1992年 , Nombas 为自己的软件写一款脚本语言 C--  --> Scrit…
08年毕业就开始接触javascript,当时是做asp.net发现很多功能用asp.net控件解决不了,比如checkbox单选,全选问题,自动计算总价问题,刷新问题,等等.那时感觉javascript好讨厌,没有好的框架和调试工具,痛不欲生.如今javascript框架漫天飞舞,jquery,zepto,AngularJs,各种应用层出不穷,动画,游戏,单页网站,甚至手机app,那里都少不了javascript,不禁感叹,还有没有javascript不能做的事情么? 8年了,如今多半时间是管…
写在前面 这是一篇译文,原文:Immediately-Invoked Function Expression (IIFE) 原文是一篇很经典的讲解IIFE的文章,很适合收藏.本文虽然是译文,但是直译的很少,而且添加了不少自己的理解. ps:下文中提到的“立即执行函数”其实就是“立即执行函数表达式” 我们要说的到底是什么? 在javascript中,每一个函数在被调用的时候都会创建一个执行上下文,在该函数内部定义的变量和函数只能在该函数内部被使用,而正是因为这个上下文,使得我们在调用函数的时候能创…
定义 || 赋值 1-函数的定义 函数定义的两种方式: “定义式”函数:function fn(){ alert("哟,哟!"); } “赋值式”函数:var fn = function(){ alert("切可闹!"); } @页面加载时,浏览器会对JavaScript代码进行扫描,并将 定义式函数进行预处理(类似C等的编译).[函数声明提升] 处理完再由上至下执行,遇到赋值式函数 则只是将函数赋值给一个变量,不进行预处理,待调用时才进行处理. @在定义前面调用函…
什么是函数 函数是一块javascript代码,被定义一次,就可以执行和调用多次:函数也是js对象,所以也可以像对象那样操作和传递:所以我们也把函数称之为函数对象: 创建函数的几种方法 一.函数声明 function a(){ //代码 } 二.函数表达式 1.自调用函数(立即执行) (function(){ //代码 })(); 2. 匿名函数表达式(将函数赋值给变量) var a = function(){ //代码 } 3.作为返回对象 return function(){ //代码 }…
对于开发人员来说,很多时候我们都会涉及到JavaScript的使用,而在使用过程中,最令人沮丧的就是变量没有相应的使用范围. 在开发中,对于任何变量.数组.函数.对象等,只要不在函数的内部,都会被默认为是全局的,意味着页面上的其他脚本都可以访问它,并可进行重写覆盖. 对于不必要放在函数内部的变量,我们要如何保证不被其他代码访问并重写覆盖呢?这时就需要将变量放在一个匿名函数的内部,定义完后立即调用,例如,在JavaScript中按如下方式编写,将会产生三个全局变量和两个全局函数: var name…
这是一篇转自汤姆大叔的文章:http://www.cnblogs.com/TomXu/archive/2011/12/15/2288411.html 前言 网上还没用发现有人对命名函数表达式进去重复深入的讨论,正因为如此,网上出现了各种各样的误解,本文将从原理和实践两个方面来探讨JavaScript关于命名函数表达式的优缺点. 简单的说,命名函数表达式只有一个用户,那就是在Debug或者Profiler分析的时候来描述函数的名称,也可以使用函数名实现递归,但很快你 就会发现其实是不切实际的.当然…
http://segmentfault.com/q/1010000000311686 (function (window, $, undefined) { play=function(){ $("#demo").val("This is a demo."); } window.wbLogin = play; })(window, jQuery); 像上边这样的代码为什么要把window, jQuery对象传进去. 为什么要传入 jQuery 通过定义一个匿名函数,创…