Closed DeanPaul closed 6 years ago
函数的name属性 函数声明提升
var a= 4;
function b() {
a =3;
console.log(a);
function a(){}
}
b()
console.log(a);
var add = function(x) {
var sum = x;
var tmp = function(x) {
sum = sum + x;
return tmp;
}
tmp.toString = function(){
return sum;
}
return tmp;
}
alert(add(1)(2)(3))
var functionName = function(arg0, arg1, arg2){
//函数体
};
//不要这样做!
if(condition){
function sayHi(){
alert("Hi!");
}
} else {
function sayHi(){
alert("Yo!");
}
}
一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 分解成质因数 var meta = [1,2,[3,4,[5]],6,[7,[8,9,[10,11,[12]]]]]; ========> [1,2,3,4...] deep clone 二叉树查找
闭包是指有权访问另一个函数作用域中的变量的函数
function createFunctions(){
var result = new Array();
for (var i=0; i < 10; i++){
result[i] = function(){
return i;
};
}
return result;
}
(function() {
var m = 0;
function getM() {
return m;
}
function setM(a) {
m = a;
}
window.g = getM;
window.f = setM;
})();
f(100);
console.info(g());
var a = 10;
function foo () {
console.log(a);
}
function aaa(fn) {
var a = 100;
fn();
}
aaa(foo);
<ul>
<li>001</li>
<li>002</li>
<li>003</li>
</ul>
var aLi = document.getElementsByTagName('li');
for (var i = 0; i<aLi.length; i++) {
aLi[i].onclick = function() {
alert(i);
}
}
function repeat (func, times, wait) {
} //这个函数能返回一个新函数,比如这样用
var repeatedFun = repeat(alert, 10, 5000)
//调用这个 repeatedFun ("hellworld")
//会alert十次 helloworld, 每次间隔5秒
function assignHandler(){
var element = document.getElementById("someElement");
element.onclick = function(){
alert(element.id);
};
}
抓Dom 互抓
function outputNumbers(count){
for (var i=0; i < count; i++){
console.log(i);
}
var i; //重新声明变量
console.log(i); //计数
}
(function(){ //匿名函数
//这里是块级作用域
})();
function(){
//这里是块级作用域
}(); //出错!
function MyObject(){
//私有变量和私有函数
var privateVariable = 10;
function privateFunction(){
return false;
}
//特权方法
this.publicMethod = function (){
privateVariable++;
return privateFunction();
};
}
var o={
fn:function (){
console.log(fn);
}
};
o.fn();
var fn=function (){
console.log(fn);
};
fn();
function fun(n,o) {
console.log(o)
return {
fun:function(m){
return fun(m,n);
}
};
}
var a = fun(0); a.fun(1); a.fun(2); a.fun(3);//undefined,?,?,?
var b = fun(0).fun(1).fun(2).fun(3);//undefined,?,?,?
var c = fun(0).fun(1); c.fun(2); c.fun(3);//undefined,?,?,?
//问:三行a,b,c的输出分别是什么?
第七章 函数表达式
函数表达式的特征 使用函数实现递归 使用闭包定义私有变量