双重循环、案例、函数、
双重循环
第一步先创建一个tr里面10个td
// 获取table
var table=document.getElementById("table");
// 定义一个初始字符串
var str="";
// 先给这个字符串增加一个tr
str+="<tr>";
// 下面循环10次,每次给里面累加一个td
var i=0;
while(i<10){
str+="<td></td>";
i++;
}
// 最后结束是累加一个</tr>
str+="</、tr>";
console.log(str)
第二步把刚才创建一个tr的方式循环10次
var table=document.getElementById("table");
var str="";
var j=0;
循环创建10次tr
while(j<10){
str+="<tr>";
var i=0;
while(i<10){
str+="<td></td>";
i++;
}
str+="</tr>";
j++;
}
table.innerHTML=str
九九乘法口诀表
var table=document.getElementById("table");
var str="";
var j=1;
while(j<10){
str+="<tr>";
var i=1;
因为乘法口诀表中列数小于等于当前行数
while(i<=j){
i+"*"+j+"="+i*j 变量+"*"+变量+"="+变量运算结果
str+="<td>"+(i+"*"+j+"="+i*j)+"</td>";
i++;
}
str+="</tr>";
j++;
}
table.innerHTML=str
最大公约数
var a=64,b=48;
先找出两个数中最小的值
var min=a>b ? b : a;
让这个数不断减小,直到1为止,然后判断a和b除以这个不断减小的数是否可以被整除,如果两个都可以被整除,则这个树就是他们两个最大公约数
while(min>=1){
if(a%min===0 && b%min===0){
break;
}
min--;
}
console.log(min);
最小公倍数
var a=12,b=16;
先求出最大值
var max=a>b ? a : b;
循环判断不断让这个最大值递增,当小于等于a*b的积时,判断这个值是否能够被a和b整除,如果可以的话就是其最小公倍数
while(max<=a*b){
if(max%a===0 && max%b===0){
break;
}
max++;
}
console.log(max);
求素数 质数 只能被1和自身整除的树
2-100
var i=2;
while(i<=100){
var j=2;
假设每个数都是素数
var bool=true;
while(j<i){
if(i%j===0){
console.log(i+"这个数不是素数");
如果有一个不是素数,则把bool设为false,
这时候循环完成判断时就不会认为它是素数了
bool=false;
break;
}
j++;
}
if(bool){
console.log(i+"这个数是素数")
}
i++;
}
do while
先执行语句块,然后再判断条件
var i=0,s=0;
do{
s+=i;
i++;
}while(i<=100);
console.log(s)
将一个链表的数据进行深遍历
var obj = {
value: 1,
link: {
value: 2,
link: {
value: 3,
link: {
value: 4
}
}
}
};
while(obj){
console.log(obj.value);
obj=obj.link;
}
for循环
for(变量的初始值;循环的条件;变量向条件运算的表达式){
}
函数
函数创建
命名函数
function 函数名(){
}
当创建script标签时,首先就会把当前script标签中所有变量及函数名做预存储在栈中
栈就相当于内存 存储了小,堆相当于硬盘 存储量大 速度慢
函数除了会把函数名做预解析以外,还会把函数体存储在堆中,并且可以随时执行
var a=3;
在栈中开辟一个空间,这个空间名叫做a。里面存放了3这个值
在战中开辟一个空间,这个空间名就是函数名,然后把函数体存在堆中,在栈中空间里存储函数体在堆中地址
匿名函数
var 函数名=function(){
}
只有定义赋值完成后才可以调用当前函数,只能写在定义变量后执行函数
自执行函数
(function(){
})()
~function(){
}();
+function(){
}();
构造函数创建
var 函数名=new Function(){
}
创建定义完成后才可以执行
var getSum=new Function("a,b","console.log(a+b)");
把参数和函数体内的代码以字符串先后的顺序给入
函数式编程 函数外面除了变量没有其他代码,及其实进入函数执行
每个函数要有自己独立实现的功能,尽量不要将多个功能混在一个函数中描写
如果函数内部没有改变外部的变量和内容,这种函数叫做纯函数
n叫做参数
function fn(n){
}
函数的参数
定义函数时,函数名后括号内的变量叫做参数,当执行函数时,函数名后面添加的数据
会逐一赋值给参数,按顺序逐一赋值
这个参数变量 叫做形参
function fn(a,b){
}
执行函数时赋值的数据叫做实参
fn(3,4);
把实参赋值给形参
如果实参比形参数量少,没有赋值的形参结果时undefined
如果实参比形参多,多出来的实参,在形参中式无法接受
# 函数的return
function getSum(){
// 定义一个sum初始值
var sum=0;
// 让i从0开始循环到arguments的长度(传参的数量)
for(var i=0;i<arguments.length;i++){
// 让sum不断累加实参
sum+=arguments[i];
}
// 返回这个计算完成结果
return sum;
}
var s=getSum(1,2,3,4,5,7,9)
console.log(s);
return 还有跳出函数的作用,不再执行return后面的语句
return 必须写在函数里
与break的区别
return 必须写在函数内,break必须写在循环或者switch中
如果在函数中有循环或者switch,如果使用return,直接跳出函数
如果使用break只跳出当前循环语句或者switch,执行后面的语句,
直到函数内所有内容运行完成