JavaScript基础 EcmaScript/05-01函数,初识作用域,(上)
Javascript工程师 简称 js工程师 下节课很难,闭包*
函数一系列功能的集合
<script>
if(1 > 0) {
document.write("a");
document.write("b");
document.write("c");
}
if(2 > 0) {
document.write("a");
document.write("b");
document.write("c");
}
if(3 > 0) {
document.write("a");
document.write("b");
document.write("c");
}
</script>
耦合==重复 低效代码 // 编程原则,高内聚,弱耦合
<script>
function test() {
document.write("a");
document.write("b");
document.write("c");
}
if(1 > 0) {
test()
}
if(2 > 0) {
test()
}
if(3 > 0) {
test()
}
</script>
简化代码
<script>
function test() {
var a = 123;
var b = 234;
var c = a + b ;
document.write("c");
}
test();
</script>
以上是函数的基本应用
函数是一个引用值,函数就是装了很多语句的狂,需要执行的时候,才执行
<script>
function test() {
document.write("hello word");
}
test();
</script>
定义
1、函数声明
<script>
用function声明一个函数 名为test (形参)必须加 {代码体}
函数名的起名和变量起名差不多
1、不能以数字开头
2、……
3、theFirstName多个单词起名,要用小驼峰原则 开发规范
(第一个单词的首字母小写,后边每个单词的首字母大写)
function theFirstName() {
}
document.write(theFirstName); 函数名指代函数体
C C++这样打印是输出地址,JS 不是,弱数据类型语言输出不了地址 它有地址,但不输出,它输出地址指向的房间
</script>
2、函数表达式
A 命名函数表达式
<script>
var test = function abc() {
document.write("hello word");
}
test();
有点像定义一个变量 表达式就是忽略它的名字的 执行的话,还是执行test abc 没什么用
test
//function abc() {
document.write("a")
}
test,上边有个名字是abc
abc //abc is not fefined
以上的函数名test可写可不写,由此可以出现第三种函数表达式==(匿名函数表达式)
</script>
B、匿名函数表达式 ^因为很常用,所以常指的函数表达式就是这种
<script>
var demo = function () {
document.write("hello word");
}
demo();
demo,的名字是还是demo
</script>
组成形式
<script>
function demo () {
document.write("hello word");
}
demo();
1、以上是规范,
2、有参数才是最神奇的 参数可有可无 且不限位数
function demo (a, b) {
//a, b 是什么意思, 叫形参,站位样,就相当于在函数里隐式的声明了a,b两个变量 没有值
//var a,
//bar b,
document.write(a + b);
var c = a + b ;
document.write(c);
}
demo(1,2); 传参的形式 ()叫实参 也不限位数
demo(3, 4); **有参数之后就很强大,用来抽象规则**
</script>
<script>
function sum (a, b) {
if(a > 10) {
document,write(a - b);
}else if (a < 10) {
document,write(a+b);
}else{
documetn.write(10);
}
}
sum(1, 2)
</script>
形参多,实参少,可以,实参多,形参少也可以
实参多,形参少,多的实参放在,arguments --【 】实参列表 如内数组
<script>
实参数组
console.log(arguments); //打印出数组
console.log(arguments.length); 打印数组长度
function sum(a) {
for(var i = 0; i <arguments.length; i ++) {
console.log(arguments.length[ i ]
}
}
形参长度
例
console.log(sum.length);
function sum(a,b,c d) {
if(sum.length >argument,length){
console.log('形参多了')
}else if (sum.length < arguments.length) {
console.log('实参多了')
}lese {
console.log('相等')
}
}
sum(10; 8, 15, 'abc'; undefined);
参数可以不限制
累加器 求和
function sum() {
for(var i = 0; i < arguments.length; i++) {
result += arguments[i];
}
console.log(result);
}
sum(1,2,3,4,5,6,58,);
内部映射关系,只有形参和实参相等的时候,一个变,另一个跟着变
如果实参少于形参,函数内 b = 2 而打出consol.log(arguments[1]); //undfined
当变量使用
function sum (a, b) {
a = 2
arguments[0] = 3;
console.log(a);
}
sum(1, 2);
终止 + 返回值 return //函数终止
终止函数
function sum (a, b) {
console.log('a');
return
}
sun();
又返回值又终止函数
function sum() {
return 123;
console.log('a); //打印不出来
}
var num = sum ();
例:
function myNumbera(target) {
return +target;
}
var num = myNumber('123');
console.log(thpeof(num) + " " + num);
</script>
typeof两种用法
1、typeof()
2、typeof 123