JavaScript学习笔记——语法基础1.4
一、函数
函数对于任何一种编程语言都是非常核心的概念,它的便利之处在于,我们可以通过函数名的随时调用( 如:functionName() ),就可以执行花括号中的语句,这样就可以实现你的想法。换一种说法,函数就像是哈利波特的通关密语,哈利波特只需要念一句正确的通关密语,就可以打开密室的大门,密语就像是函数,哈利波特在念它的时候就像是在调用这个函数,这个函数的作用同时也是哈利波特的目的就是打开密室的大门。
1、定义函数的语法:
function functionName (arguments){ statements; }
其中function是关键字,functionsName是函数名,命名方式建议遵循“驼峰式”,圆括号中的arguments是参数,注意它是复数,参数可能不只一个,花括号中的statements是执行语句,注意它也是复数,执行语句可能不只有一句。例如,下面这个函数可以用来计算两个数的和。
function numTotal (num1,num2){ var total = num1 + num2; document.write(total); } numTotal(5,15); // 20
2、函数中的参数
JavaScript中函数的参数相对其他编程语言较为不同,若在函数中有一个参数,可以传递一个、三个甚至不传递参数值;你也可以不先设定参数,却可以进行隐式传递。即使如此,但我不认为这是你可以不正确使用参数的理由。
还有一点需要注意的是,为了优化函数甚至整个程序代码,我们应当尽量减少函数中的参数个数,时间久了,你会发现,这是一个好的思维方式。
3、变量的作用域
通过var关键字定义的变量是局部变量,反之,没有用var关键字而直接定义的变量为全局变量。全局变量将影响全局的结果,所以在使用全局变量的时候一定要慎重。
1 function myFunction(a,b){ 2 total = a * b; 3 return total; 4 } 5 var total = 500; 6 var num = myFunction(10,10); 7 document.write(total); // 100
第二行中变量total虽然是在函数体内定义的,但是它是全局变量,第五行中的total是局部变量,由于位置的特殊,第五行的值刚赋给局部变量total,第六行就立刻传参给函数myFunctions(),从而获取了影响全局total的值。如果第二行的变量total改成局部变量,则最终结果为500,因为函数体返回的total的值本身不会跳出函数体,第六行是将total的值赋值给变量num而不是total。
二、对象
1、遍历对象的属性值
对象是一种特殊的数据类型,包含在对象中的数据,可以通过对象的属性和方法来访问。
var person = new Object(); person.name = '筱雨生'; person.age = 15; person.height = 175; person.skinColor = 'yellow'; for ( var i in person){ document.write(person[i] + '<br/>'); } //通过for-in语句遍历person对象的属性值 //i包含了person所有的属性,person[0]就是person.name function who(){ for ( var i in person){ document.write(person[i] + '<br/>'); } } who();//通过函数who()来实现遍历person对象的属性值
2、内建对象
所谓的内建对象是指JavaScript内部创建好的对象,针对这些对象,JavaScript也创建好了相应的方法和属性,在你有需求的时候,可以直接调用。
var num = new Array(); document.write(num.length); //0 document.write('<br/>'); //换行 var newNum = 3.1415926; document.write(Math.round(newNum)); // 3
上面这段代码中,Array、document、Math都属于内建对象,除此之外,还有许多内建对象供我们使用。