JavaScript
JavaScript
JavaScript
action object/
name
name
function sayHi() {
alert("Hi");
}
alert(sayHi.name); // sayHi
let sayHi = function() {
alert("Hi");
};
alert(sayHi.name); // sayHi
function f(sayHi = function() {}) {
alert(sayHi.name); // sayHi
}
f();
let user = {
sayHi() {
// ...
},
sayBye: function() {
// ...
}
}
alert(user.sayHi.name); // sayHi
alert(user.sayBye.name); // sayBye
name
//
let arr = [function() {}];
alert( arr[0].name ); // <>
//
length
length
function f1(a) {}
function f2(a, b) {}
function many(a, b, ...more) {}
alert(f1.length); // 1
alert(f2.length); // 2
alert(many.length); // 2
rest
length /introspection
ask question handler ...handlers
handlers handlers
handler handler.length
handler handler
function ask(question, ...handlers) {
let isYes = confirm(question);
for(let handler of handlers) {
if (handler.length == 0) {
if (isYes) handler();
} else {
handler(isYes);
}
}
}
// handler
// handler
ask("Question?", () => alert('You said yes'), result => alert(result));
counter
function sayHi() {
alert("Hi");
//
sayHi.counter++;
}
sayHi.counter = 0; //
sayHi(); // Hi
sayHi(); // Hi
alert( `Called ${sayHi.counter} times` ); // Called 2 times
sayHi.counter = 0 counter counter let counter
function makeCounter() {
//
// let count = 0
function counter() {
return counter.count++;
};
counter.count = 0;
return counter;
}
let counter = makeCounter();
alert( counter() ); // 0
alert( counter() ); // 1
count
count
function makeCounter() {
function counter() {
return counter.count++;
};
counter.count = 0;
return counter;
}
let counter = makeCounter();
counter.count = 10;
alert( counter() ); // 10
NFENamed Function Expression
let sayHi = function(who) {
alert(`Hello, ${who}`);
};
let sayHi = function func(who) {
alert(`Hello, ${who}`);
};
"func"
function "func"
sayHi()
let sayHi = function func(who) {
alert(`Hello, ${who}`);
};
sayHi("John"); // Hello, John
func
sayHi who "Guest"
let sayHi = function func(who) {
if (who) {
alert(`Hello, ${who}`);
} else {
func("Guest"); // func
}
};
sayHi(); // Hello, Guest
//
func(); // Error, func is not defined
func sayHi
let sayHi = function(who) {
if (who) {
alert(`Hello, ${who}`);
} else {
sayHi("Guest");
}
};
sayHi
let sayHi = function(who) {
if (who) {
alert(`Hello, ${who}`);
} else {
sayHi("Guest"); // Error: sayHi is not a function
}
};
let welcome = sayHi;
sayHi = null;
welcome(); // Error sayHi
sayHi sayHi sayHi null
let sayHi = function func(who) {
if (who) {
alert(`Hello, ${who}`);
} else {
func("Guest"); //
}
};
let welcome = sayHi;
sayHi = null;
welcome(); // Hello, Guest
func
sayHi welcome func
nameJavaScriptlengthRest
Named Function Expression
JavaScript
<code><pre>10 plnkrJSBincodepen