day07function

108 阅读5分钟

1、*****Function:自定义函数:也叫做方法,是需要预定义好的,以后可以反复使用的代码段 1、创建:2种 *1、声明方式:function 函数名(形参列表){ 函数体; return 返回值; }

	2、直接量方式:var 函数名=function(形参列表){
			函数体;
			return 返回值;
		          }
		通过此方式,我们可以看出一个点:函数名其实就是一个变量名,函数名和变量名尽量的不要冲突

	return的本意其实是退出函数的语法,但是return后如果跟着一个数据,会顺便将你的数据返回到全局,但注意只负责返回不负责保存

2、调用&接住结果:
	var result=函数名(实参列表)

3、***作用域:21、全局作用域:全局变量和全局函数,在任何地方都可以访问、使用

	2、函数/局部作用域:局部变量和局部函数,只能在【函数调用时内部可用】

	带来了变量的使用规则:优先使用局部的,局部没有会自动找全局,全局也没有就报错

	特殊:
		1、千万不要对着未声明的变量直接赋值:a=1;//会导致我们污染全局,内存平白无故再全局创建了一坨,还不方便我们释放
		2、儿子不孝啊,局部的东西全局居然不能使用,解决:回看上面
		3、建议:return一般只出现在函数体的末尾,而且只能写一个return
		4、哪怕你没写return,其实最后也会悄悄的有一个returnreturn的是一个undefined,但是我们并不喜欢,不推荐
		5、往往前辈们提供的方法,底层都有一个return操作,前辈们觉得以后使用这些方法的人,可能还需要此结果拿去干别的操作
		6、不是说函数必须要有return,如果函数的调用者,以后还需要拿着函数的结果去干别的事,都需要return,否则不需要

4、***声明提前:鄙视重点 - 祖师爷留下的一个问题
	原理:在程序正式执行之前,
	          会悄悄的将var 声明的变量和function声明的函数,
	          集中提前到当前作用域的顶部,但是赋值留在原地,
	          而且变量比函数轻

	明说,我们自己写代码绝对不会碰到,只要我们遵守以下规则:
		1、先创建后使用
		2、变量名和函数名尽量的不要冲突
	只会在鄙视中碰到:如果你碰到了先使用后创建,多半都是在考你声明提前,你应该先转换为提前后的样子,再去判断输出,一定要看清代码执行的顺序

5、***按值传递:简单来说就是两个变量之间进行赋值 - 你一定看清楚传递的是什么类型
	如果你传递的是原始类型的值:两个变量之间是不会相互影响的,因为其实是复制了一个副本给对方

	如果你传递的是引用类型的对象:两个变量之间是会相互影响的,因为我们其实是使用了同一个地址值 - 也叫做浅拷贝

为什么函数我给5颗星,因为考点极多:慢慢学,不着急
	1、创建方式
	2、作用域
	3、声明提前
	4、按值传递
	5、匿名函数
	6、重载
	7、闭包

2、预定义的全局函数:前辈们提前准备好的,我们程序员可以随时随地使用的函数 1、编码和解码: 问题1:url之中是不允许出现多字节字符的,如果出现则会发生乱码,乱码导致谁都认不到 在utf-8编码格式下,一个汉字,占3字节 解决:在发送之前,前端会将多字节字符编码为单字节内容,在发送 后端接收到了,可以进行解码操作,变回多字节原文 编码:var code=encodeURIComponent("原文"); 解码:var 原文=decodeURIComponent(code); 在某一次浏览器更新后,自带此功能了,这两个方法当场就被淘汰了

	现在唯一的用处就是用来玩个悄悄话 - 编码后发送到群里

2isFinite(num) - 判断出你这个数字是不是无穷大,垃圾
	有3个情况会为falseNaNInfinity、分母为0

3、真正牛逼反而是我早就教过大家的:isNaNparseIntparseFloateval(脱字符串的衣服)

3、***分支结构:if分支、短路、三目、switch...case...: 语法: switch(变量/表达式){ case 值1: 操作; break; case 值2: 操作; break; case 值3: 操作; break; default: 默认操作; }

特殊:
	1switch...case 比较时不具备隐式转换
	2switch...case 默认满足了一项,会把后面所有的操作全部做完,解决:搭配上break
		有的地方可以不加break1default最后一句话可以不加
			2、如果多个case之间做的是一样的操作,也可以不加
	3switch...case... vs if...else...
		1switch...case...:性能更好,因为它的case不能做范围判断,只能做精确值查找,但是switch小括号中还可以写表达式,语法相对复杂
		2if...else...:分支中性能最差,因为它支持范围判断,语法相对简单
	建议:真实开发中,if...else...越少越好

扩展: 1、animate.css文件,这是一个动画库,具有很多很多的动画,动画都不需要你写,你可以直接使用,可以让你的金夫人更漂亮 animate.style/

作业:要求:老要求不变,新要求:不允许使用if...else...,用switch...case 1、悄悄话,发送到群里,其他人来解析 2、PPT14页 1、2题 3、PPT49页 1道题 4、好好理解上午的概念理论 5、再金夫人上搭配上animate.css动画库,让你的网页与众不同