2018-09-23 JavaScript作业解析

  • Samler 

1)编写一个判断某个非负整数是否能够同时被3,5,7整除的函数,然后在页面上输出1-1000所有能满足这些条件的函数,并要求每行显示6个这样的数。

基础写法:

function check(num){
  if(num % 3 == 0 && num % 5 == 0 && num % 7 == 0) return true;
  else return false;
}

var sum = 0;
for(var i = 1; i <= 1000; i++){
  if(check(i)){
    document.write(i + "&nbsp;");
    sum ++;
    
    if(sum % 6 == 0) document.write("<br>");	//如果能够被6整除 说明已经输出6次 可以换行
  }
}

高能写法:

function check(number){
  return number % 3 == 0 && number % 5 == 0 && number % 7 == 0;
}
for(var i = 1, index = 0; i <= 1000; i++)
  check(i) && document.write(i + "&nbsp;" + (++index % 6 == 0 ? "<br>" : ""));

2)编写一个函数,计算12!-10!的结果。

基础写法:

function fact(num){
  if(num > 1) return num * fact(num - 1);
  else return 1;
}
document.write(fact(12) - fact(10));

高能写法:

function fact(num){
  return num > 1 ? num * fact(num - 1) : 1;
}
document.write(fact(12) - fact(10));

3)定义一个函数能同时实现如下功能:

  1. 如果是一个参数,算出4×2+3x+2的值;
  2. 如果没有参数,显示1-50奇数的总和。

基础写法:

function demo(){
  if(arguments.length == 0){		//参数列表等于0	
    var sum = 0;
    for(var i = 1; i <= 50; i++){
      if(i % 2 != 0){		//如果不等于0说明不能被2整除
        sum ++;
      }
    }
    
    document.write(sum);
  }
  else if(arguments.length == 1){	//参数列表等于1
    document.write(4 * arguments[0] * arguments[0] + 3 * arguments[0] + 2);
  }
}

高能写法:

function demo(){
  document.write(arguments.length == 1 ? 4 * Math.pow(arguments[0], 2) + 3 * arguments[0] + 2 : (arguments.length == 0 ? (function(){var sum = 0; for(var i = 1; i <= 50; i++) sum += i % 2 != 0 ? i : 0; return sum})() : ""));
}