对了,从事工作自己的表达能力一定要多加练习,想象一下你自己站在一个舞台上,下面有成百上千的人,你会不会紧张。这种能力只有多练才能够完美解决。事先准备好材料也是一个不错的法子。万事预则立,不预则废。就是这个道理。
上课测试:
- 冒泡排序:
两两进行比较,大的放后面,最后一次不用进行比较,没走一次大的就放后面了,之后最后面的元素不再参与比较。最后一次比较没有意义。
2.函数定义的总结:8个点
函数是封装了一段可以重复执行的代码,对外只暴露一段函数名,相当于用户做了某件事情,某件事情就是函数。函数别称:函数,方法、API、接口;函数命名用动词,小驼峰。调用一次执行一次,不调用不执行。只要调用就会进入函数体。先声明后使用,和变量一样。函数就是某个动作。
3.形参和实参定义知识点总结
function 函数名(形参){
let 形参 ;//系统省略
形参=实参;//调用时运行,系统省略。
函数体;
}
函数名(实参);
形参:形式上的参数。
实参:实际参与运算的数据。
形参就是只声明未赋值的变量,只声明未负值的变量会显示undefined。调用函数的时候,把实参赋值给形参;形参和实参的个数尽量保持一致。
4.返回值定义的理解
返回值,接收函数运行完后最终的结果。
增加return, return 事情的结果。 系统默认返回undefined。手动返回值则覆盖undefined。return 之后的代码不再执行。函数的返回值,可以选择接收,也可以不接收
5.Arguments定义,可以接收用户输入不确定的数组。
函数自带的,有函数才有这个东西,依托于函数。脱离函数就无法使用
系统内置的关键字,它是一个伪数组,保存了用户输入的实参。
一般用于实参个数不确定的情况。
一、
- 函数的两种声明定义方式:
- null数据类型 object(复杂数据类型)但是,null是数据类型。
- 它等于null,下一次清理内存function函数就被清理调了。
run就不再是函数了 js第四次报错
- 这种方法输出了函数的声明。
- 箭头函数定义
二、作用域定义
局部作用域:在函数内部。
js种变量的作用域:全局变量(全局作用域声明的变量),
形参是局部变量。
2. js没有块级作用域
let是es6的关键字。使用let就显示num未定义。
下午下课
一、
- 作用域链 :函数使用变量的时候,采用就近原则。预解析定义。
案例
1问,没声明也没有赋值就报defined,未定义。
2问预解析后 num1就是一个只声明为赋值的变量,浏览器打印出undefined。
遇到function后第二条规则走
与解析后,把鼠标经过的部分提升到最前面。
如果是这种情况:
预解析后 又跑到调用函数前面了。 fn();在次形式写的位置是没有意义的。
- skill();只能放后面,这种匿名函数写法。
预解析后 变量声明提升,赋值留在原地。
如果说skill放后面:
预解析后从上往下执行。 第一行, skill 是一个变量,变量无法当函数用。所以提示skill is not a function
测试一下细节:这样写,第一行会报错,提示skill is not defined
原因:js有个预解析。
预解析定义方法:
- 预解析案例。
- 结果为10;
预解析后代码
结果undefined
预解析后:
- 案例二
结果为:undefined只定义为赋值 (is not defined 未定义未赋值)
预解析后
这种情况就不用注意全局变量num的值了。
- 函数的相互调用案例
需求:用户输入年份,输出当前2月份的天数。