JavaScript运行需要什么
我们简单来理解一下,需要宿主。JS的标准是由ECMA来制定的,所以叫ECMAScript。但是运行呢?总不能在空气中运行吧,所以只要弄个解释器在以下这些玩意儿上,都能运行。
浏览器、操作系统、硬件、其他
(这些统称宿主)
Object、Function、Array、String、Boolean、Number、Date、RegExp、Error...
(这些对象可以理解为JS原生对象,独立于宿主的)
document、window、xmlhttprequest
宿主对象(以浏览器为例)
JavaScript中吊炸天的Function
Function
是JS中原生对象之一,也是JS中最牛逼的对象。
这说明本身就有对象叫做Function
,我们通常写的所谓的“函数”都是一种Function对象不同形式
var me = Function("a","b","return a+b");
console.log(me(1,2)); //打印:3
一般不用这种方式,虽然它是最原始、最完整的方式。
我们常用的方式:函数声明
function me(a,b){
return a+b;
}
这种方式叫做函数声明,注意不是匿名函数。
匿名函数:
var me = function(){
return "hello";
}
还有一种很特殊的递归函数(了解):
var i = 0;
var me = function mm(){ //注意,这个mm()只能在函数内部递归调用
i++;
console.log(i);
if(i<5){
mm()
}
}
//调用me
me();
ES2015的箭头函数:函数表达式
它是一个简写形式的“函数表达式”,但不仅仅是,比如它没有constructor
方法,也没有prototype
,不支持new
操作,修复了this
的指向。
var me = (参数1=默认值,参数2)=>{
xxoo
}
// 如果只有一个参数,圆括号可以不写
// var me=参数1=>{xxoo}
写成匿名函数:
(age=>{
console.log("我的年龄是"+age)
})(18);