代码信息来自于http://ejohn.org/apps/learn/. 可以使用哪些方式来声明函数? function isNimble(){ return true; } var canFly = function(){ return true; }; window.isDeadly = function(){ return true; }; console.log(isNimble, canFly, isDeadly);//function isNimble() function canF…
代码信息来自于http://ejohn.org/apps/learn/. 函数和对象是不是非常相似? var obj = {}; var fn = function(){}; console.log( obj && fn );//true var obj = {}; var fn = function(){}; obj.prop = "some value"; fn.prop = "some value"; console.log( obj.prop…
代码信息来自于http://ejohn.org/apps/learn/. 可以通过函数的名字在它的内部引用它. function yell(n){ return n > 0 ? yell(n-1) + "a" : "hiy"; } console.log( yell(4) === "hiyaaaa", "在函数的内部通过它的名字访问它自己" ); 当不通过命名函数来声明时,在其内部如何调用自己? var ninja =…
如果函数是一个对象的属性,那么它可以? var katana = { isSharp: true, use: function(){ this.isSharp = !this.isSharp; } }; katana.use(); console.log( katana.isSharp );//false; 在javascript中,函数的内部,this默认指向调用它的对象.本例katana.use(),函数use被对象katana调用,所以在函数内部,this.isSharp可以操作katan…
代码信息来自于http://ejohn.org/apps/learn/. 使用数量可变的参数对编程很有好处 function merge(root){ for(i = 0 ; i < arguments.length; i++) for(var key in arguments[i]) return root[key] = arguments[i][key] } var merged = merge({name: "John"}, {city: "Boston"…
代码信息来自于http://ejohn.org/apps/learn/. new做了什么? function Ninja(){ this.name = "Ninja"; } var ninjaA = Ninja(); console.log( ninjaA, "undefined,ninja并不是实例化" ); var ninjaB = new Ninja(); console.log( ninjaB.name == "Ninja", "…
定义函数两种方式: 1.函数声明 function sayHi(){ alert("Hi"); } sayHi();//调用函数 2.函数表达式 var sayHi = function(){ alert("Hi"); } sayHi();//调用函数 函数声明提升(function declaration hoisting):在执行代码之前会先读取函数声明. sayHi(); function sayHi(){//函数声明可以放到调用它的语句后面 alert(&q…
关于函数声明,它的一个重要特征就是函数声明提升,意思是在执行代码之间会读取函数声明,意思是在执行代码之前会先读取函数声明.这就意味着可以把函数声明放在调用它的语句 后面. sayHi(); function sayHi(){ alert("Hi!"); } 理解函数提升的关键,就是理解函数声明与函数表达式之间的区别. //不要这样做 if(condition){ function sayHi(){ alert("HI!"); } }else{ function sa…
内容概要 作用域安全的构造函数 惰性载入函数 函数绑定 函数节流 一.作用域安全的构造函数 我们知道,当使用new操作符调用构造函数时,构造函数内部的this会指向新创建对象的实例. function Person(name){ this.name=name; } var p=new Person('peter'); console.log(p.name);//结果:perter 但是,如果没有使用new操作符,而是将构造函数当作普通函数调用时,this会指向window对象. var p1=P…
JavaScript 使用关键字 function 定义函数. 函数可以通过声明定义,也可以是一个表达式. 函数声明分号是用来分隔可执行JavaScript语句. 由于函数声明不是一个可执行语句,所以不以分号结束. 在之前的教程中,已经了解了函数声明的语法 : function functionName(parameters) { 执行的代码 } 函数声明后不会立即执行,会在我们需要的时候调用到. <body> <p>本例调用的函数会执行一个计算,然后返回结果:</p>…