一、for in循环
用来遍历对象中的键值对
var obj = {name:"ahg",age:18,job:"ad"}for (var key in obj) {// obj["name"] name常量//key 为变量。所以[]里边没引号 obj[key]console.log("key:" + key + " " + "value:" + obj[key]);}
二、while循环
var num = 2;// 只要条件成立,就会一直执行循环体里的语句while (num>3) {console.log(num);break;}// do while循环 不管条件是否成立,先执行一次循环体里面的语句,然后再判断do {console.log(num);}while(num>3);
三、函数(用来实现某种功能)
函数是一个引用数据类型,在存储的时候,开辟一个堆内存,**把函数里面的代码以字符串进行存储**
- 形参:形式上的参数
- 实参:真实传递的参数
- 实参的类数组:arguments
- arguments.length; //真实传递的实参个数
- arguments[索引]; //获取某个实参
- arguments.callee; //函数执行体里的所有内容(包括注释)
- 函数的返回值:在函数里面,return多少,就返回多少;不写return返回值,就返回undefined
- 函数执行的时候,会形成一个私有作用域,保护里面的私有变量不受外界的干扰,这种机制理解为闭包
接收参数的两种方式
- arguments
- 形参
实名函数
function fn() {console.log(1);}
匿名函数
- 函数表达式
// 匿名函数之函数表达式var fn2 = function () {console.log(100);}fn2();
- 自执行函数(立即执行函数)
// 匿名函数之立即执行函数(function () {console.log("立即执行函数方式一");})();+function () {console.log("立即执行函数方式二");}();-function () {console.log("立即执行函数方式三");}();~function () {console.log("立即执行函数方式四");}();!function () {console.log("立即执行函数方式五");}();
四、ES6的箭头函数
箭头函数里边没有arguments
// 箭头函数var jt = function (x, y) {return x+y;}console.log("jt:" + jt);// 箭头函数里边没有arguments实参列表,而是arg// ...arg 是把实参数组引入var fun=(...arg)=>{console.log(arg); //[ 100, 200, 300 ]}fun(100,200,300);// 箭头函数可省略functionvar jt1 = (x, y) => {return x + y;}console.log("jt1:" + jt1);// 如果只有一个形参,可省略小括号var jt2 = x => {return x + 1;}console.log("jt2:" + jt2);// 如果函数体里只有一句执行语句,函数体的{}也可省略var jt3 = (x, y) => x + y;console.log("jt3:" + jt3);
五、求和!!
普通函数写的求和方法
- 知道实参个数的求和
var sum = function (x, y) {return x+y;}var value = sum(1, 2);console.log(value);
- 不知道实参个数的求和
// 不知道实参个数并且实参里边包含非有效数字// 错误的判断有效数字方法var total3 = function () {var num = arguments.length;var res = 0;for (i=0;i<num;i++) {// 这个判断是否为有效数字的方法不行// 因为 Number("12px")==>NaN typeof(NaN)==>"number"if(typeof(Number(arguments[i])) =="number"){res+=Number(arguments[i]);}}return res;}console.log(total3(1, 2, 3, "12px", "12"));// 正确的判断有效数字方法var sum2 = function () {var res = 0;var len = arguments.length;for (i=0;i<len;i++) {// 判断是否为有效数字,为有效数字则相加// isNaN(arguments[i]) == false 证明是有效数字if (!isNaN(arguments[i])) {res+=Number(arguments[i]);}}return res;}var sum2 = sum2(1, 3, 5, "12px", "12");console.log(sum2);
应用立即执行函数、箭头函数写的求和方法
// 应用箭头函数写的求和方法var total2 = (...arg) => {var num = arg.length;var value2 = 0;for (i = 0; i < num; i++) {value2 = value2 + arg[i];}return value2;}var value2 = total2(3, 2, 3, 4);console.log(value2);// 应用立即执行函数写的求和方法var res = (function () {var num = arguments.length;var value2 = 0;for (i = 0; i < num; i++) {value2 = value2 + arguments[i];}return value2;})(2, 3, 4)console.log(res);
