一、for in循环

用来遍历对象中的键值对

  1. var obj = {
  2. name:"ahg",
  3. age:18,
  4. job:"ad"
  5. }
  6. for (var key in obj) {
  7. // obj["name"] name常量
  8. //key 为变量。所以[]里边没引号 obj[key]
  9. console.log("key:" + key + " " + "value:" + obj[key]);
  10. }

二、while循环

  1. var num = 2;
  2. // 只要条件成立,就会一直执行循环体里的语句
  3. while (num>3) {
  4. console.log(num);
  5. break;
  6. }
  7. // do while循环 不管条件是否成立,先执行一次循环体里面的语句,然后再判断
  8. do {
  9. console.log(num);
  10. }while(num>3);

三、函数(用来实现某种功能)

函数是一个引用数据类型,在存储的时候,开辟一个堆内存,**把函数里面的代码以字符串进行存储**

  • 形参:形式上的参数
  • 实参:真实传递的参数
  • 实参的类数组:arguments
    • arguments.length; //真实传递的实参个数
    • arguments[索引]; //获取某个实参
    • arguments.callee; //函数执行体里的所有内容(包括注释)
  • 函数的返回值:在函数里面,return多少,就返回多少;不写return返回值,就返回undefined
  • 函数执行的时候,会形成一个私有作用域,保护里面的私有变量不受外界的干扰,这种机制理解为闭包

接收参数的两种方式

  • arguments
  • 形参

实名函数

  1. function fn() {
  2. console.log(1);
  3. }

匿名函数

  • 函数表达式
  1. // 匿名函数之函数表达式
  2. var fn2 = function () {
  3. console.log(100);
  4. }
  5. fn2();
  • 自执行函数(立即执行函数)
  1. // 匿名函数之立即执行函数
  2. (function () {
  3. console.log("立即执行函数方式一");
  4. })();
  5. +function () {
  6. console.log("立即执行函数方式二");
  7. }();
  8. -function () {
  9. console.log("立即执行函数方式三");
  10. }();
  11. ~function () {
  12. console.log("立即执行函数方式四");
  13. }();
  14. !function () {
  15. console.log("立即执行函数方式五");
  16. }();

四、ES6的箭头函数

箭头函数里边没有arguments

  1. // 箭头函数
  2. var jt = function (x, y) {
  3. return x+y;
  4. }
  5. console.log("jt:" + jt);
  6. // 箭头函数里边没有arguments实参列表,而是arg
  7. // ...arg 是把实参数组引入
  8. var fun=(...arg)=>{
  9. console.log(arg); //[ 100, 200, 300 ]
  10. }
  11. fun(100,200,300);
  12. // 箭头函数可省略function
  13. var jt1 = (x, y) => {
  14. return x + y;
  15. }
  16. console.log("jt1:" + jt1);
  17. // 如果只有一个形参,可省略小括号
  18. var jt2 = x => {
  19. return x + 1;
  20. }
  21. console.log("jt2:" + jt2);
  22. // 如果函数体里只有一句执行语句,函数体的{}也可省略
  23. var jt3 = (x, y) => x + y;
  24. console.log("jt3:" + jt3);

五、求和!!

普通函数写的求和方法

  1. 知道实参个数的求和
  1. var sum = function (x, y) {
  2. return x+y;
  3. }
  4. var value = sum(1, 2);
  5. console.log(value);
  1. 不知道实参个数的求和
  1. // 不知道实参个数并且实参里边包含非有效数字
  2. // 错误的判断有效数字方法
  3. var total3 = function () {
  4. var num = arguments.length;
  5. var res = 0;
  6. for (i=0;i<num;i++) {
  7. // 这个判断是否为有效数字的方法不行
  8. // 因为 Number("12px")==>NaN typeof(NaN)==>"number"
  9. if(typeof(Number(arguments[i])) =="number"){
  10. res+=Number(arguments[i]);
  11. }
  12. }
  13. return res;
  14. }
  15. console.log(total3(1, 2, 3, "12px", "12"));
  16. // 正确的判断有效数字方法
  17. var sum2 = function () {
  18. var res = 0;
  19. var len = arguments.length;
  20. for (i=0;i<len;i++) {
  21. // 判断是否为有效数字,为有效数字则相加
  22. // isNaN(arguments[i]) == false 证明是有效数字
  23. if (!isNaN(arguments[i])) {
  24. res+=Number(arguments[i]);
  25. }
  26. }
  27. return res;
  28. }
  29. var sum2 = sum2(1, 3, 5, "12px", "12");
  30. console.log(sum2);

应用立即执行函数、箭头函数写的求和方法

  1. // 应用箭头函数写的求和方法
  2. var total2 = (...arg) => {
  3. var num = arg.length;
  4. var value2 = 0;
  5. for (i = 0; i < num; i++) {
  6. value2 = value2 + arg[i];
  7. }
  8. return value2;
  9. }
  10. var value2 = total2(3, 2, 3, 4);
  11. console.log(value2);
  12. // 应用立即执行函数写的求和方法
  13. var res = (function () {
  14. var num = arguments.length;
  15. var value2 = 0;
  16. for (i = 0; i < num; i++) {
  17. value2 = value2 + arguments[i];
  18. }
  19. return value2;
  20. })(2, 3, 4)
  21. console.log(res);