其实之前大学有学习过,net和c++的语法,现在已经忘记的差不多。现在捡起来JS的语法,虽然不陌生,但是现在还是要努力的学习下。
js的函数构造貌似跟C的构造有点像。格式都是
function functionName(arg0,arg1,......,argn){
statements
}
//上面这是一个函数的结构,下面这个例子是一个简单的函数
function sayHi(){
return("Hello World!");
}
以上的例子呢,这个函数没有参数传入。其实是可以在sayHi()函数内部放写参数的,如果不给这个参数传值,默认是undifined数据类型。
每个方法都是有自己的一个默认的对象的,这个对象的名字叫做‘arguments’,然而你在函数上传入的参数,也都是以数组的形式保存在这个对象上。例如下面这段代码
function demo(name,sex){
console.log(arguments.length); //2
console.log(arguments[0]); //name
}
demo('name','sex');
这块跟作用域没有一点关系,,,接下来咱们来说说js的函数作用域。
我理解的js函数作用域就是----儿子可以啃老,但是老子不能拿儿子的变量。怎么说呢。来咱们上demo
var color = 'blue'; //全局变量
function changeColor(){
if (color ==='blue'){
color = 'green';
}else{
color = 'red';
}
}
changeColor();
console.log(color); //green
在这个简单的函数changeColor() 中,作用域链包含两个对象,一个是自家的变量对象arguments和全局环境下的变量对象。可以在函数内部访问到color,就是因为可以在这个作用域链上找到它。
书中还有一个函数内部嵌套函数的例子,能更好的解释这个作用域链,但是我觉得这个其实已经够理解了。就写这个啦,就是我之前说的,儿子可以向老子要东西,可是老子就是拿不到儿子的东西。不管嵌套再深,子集函数总是能访问到父级函数定义的变量。