研究了一下<JavaScript高级程序设计>,书不赖 挺合适有其他的语言基础的人来学.
感觉JS里不光有OO的思想,感觉更像是C++:除了对象也需要main这类东西做过程控制.
特别是学到函数这块,有点儿当年拿C写嵌入式程序时候的感觉 哈哈
一.函数名和函数调用
1.函数名相只是个指针变量(个人感觉当于C中的函数指针).
Js中var是松散类型的,也就是说这个指针变量其实可以指向:非Js基础类型的任何一种引用型的对象.(Js变量分基础类型和引用型两种)2.函数调用的语法是: 函数名() (感觉是函数指针的调用)
/**
* http://blog.csdn.net/ruantao1989
* ==>July18 一.函数名和函数调用
*/
function add10( num )//==>声明函数
{
return (num + 10);//==>没return的话函数就返回undefined
}
var otherFunName = add10;//==>函数指针变量的拷贝
alert( otherFunName(10) );//==>调用函数指针
二.函数对变量作用域的影响
JavaScript不像其他语言用大括号{}来划定局部变量的作用域.唯一能划清局部作用域的界限就是对象,function就是比较重要的对象 /**
* http://blog.csdn.net/ruantao1989
* ==>July18 二.函数对变量作用域的影响
*/
var val = "out";
(function(){
for( var val=0 ; val < 3 ; val ++ )
{
}
alert("==>匿名函数内部val的值:" + val );//==>3,答案没错:for循环都不算局部作用域
})() //==>匿名函数最后加()表示调用此函数
alert("==>外部val的值:" + val);//==>"out"
三.两种声明函数的方法,是否可以先调用后声明
/**
* http://blog.csdn.net/ruantao1989
* ==>July18 三.函数对变量作用域的影响
*/
alert(b())//==> b函数的声明方法会导致Js提前编译函数
//alert(a());//==> a()的声明方法不行, 这样调用会产生错误:大意是:a不是函数对象 所以无法调用
function b()//==>这种声明不受先后顺序影响,可以先调用后声明
{
return "==>b";
}
var a = function(){
return "==>a";
};
四.函数参数,传入函数指针
/**
* http://blog.csdn.net/ruantao1989
* ==>July18 四.函数参数,传入函数指针
*/
function add20( num )
{
return (num + 20);
}
function sumAll( funPointer , n )//==>动态传入函数指针
{
return funPointer( n );
}
alert("==>" + sumAll(add20,30) );
作者:ruantao1989
出处:http://blog.csdn.net/ruantao1989
申明:作者写博是为了总结经验,和交流学习之用。如需转载,请尽量保留此申明,并在文章页面明显位置给出原文连接。谢谢!