web-6 javascript 笔记

144 阅读2分钟

javascript

面对对象的弱类型脚本语言,网页的特效,交互
运行 在拥有js引擎的地方 浏览器

数据类型

  基本数据类型:number  数字型
               string  字符串
               boolean 布尔型 TRUE/FALSE
               undefined  未定义 有变量没有值 
               null  空值
               symbol 独一无二的 
               
  引用数据类型:Object

变量

变量存储在哪  操作系统内存 栈内存 基本数据类型,自动产生             堆内存,自动产生 

特殊的地方:var变量提升 
当浏览器在执行js的程序的时候js引擎【js作用域顶层】:  会先声明变量  再去给变量赋值
    
    1.变量的命名规范:不能以数字或者是除了$和_之外的特殊符号开头,且不能包裹特殊的符号,不能使用js的保留字命名
    (见名知意 不能用拼音)
    2.如果变量名是两个英文单词意思组成:采用小驼峰命名法
     小驼峰:background-color  => backgroudColor  一般用来定义变量  对象  函数的名字
     大驼峰:background-color  =>BackgroundColor  一般用来定义接口和类的名字

for循环

 for(初始条件;判断语句;变化量){
        js脚本
    }

    运行顺序:初始条件 = > 判断语句 => js脚本 => 变化量=>判断语句=>js脚本=>变化量=>判断语句
   

穷尽算法

  //求100的约数(a/i ia整除)
	var a=100;
	for(var i=0; i<=100;i++){
		if(a % i ==0){
			console.log(i); //输出:2.4.5.10.20.25.50.100
		}
	}
  //随机约数
	var b=parseInt(prompt('输入'));
	for(var i =1; i<=b;i++){
		if(b % i ==0){
			console.log(i);
		}
	}

累加器

   //1-100的和
   var sum =0
      for(var i=1 ; i<=100;i++){
      	sum +=i; 	
      }
      console.log(sum);//5050
   
   //1-200之间的质数
	for(var i=1;i<=200;i++) {  //质数循环次数
		var num=0;         //获取的因数次数 46个2次
		for(var a=1;a<=i;a++){//因数循环次数
			if (i % a ==0) {
				num += 1;
			}
		}
		if (num==2) {
			console.log(i+'质数');//质数i
                            //3 5 7 11 13 17 19...199
		}
	}
  

break 跳出当前循环

  for (var i= 0; i <= 10;i++) {
			//if(i == 6) break;//结束循环 跳出当前循环
			if(i == 6) continue;//跳出本次 执行下面的循环
			console.log(i);
		}
		function fun(){
			console.log(9);//9
			return false;//返回 结束
			console.log(8);
		}
		fun()

while 和 do while

               //常用 for循环
	 	var sum =0;
		for (var i=0; i<5; i++) {
			sum+=1;
			console.log(sum);
		} 

		// while循环
		var i = 0;
		var sum1 = 0; //   初始化
		while (i < 6) { //判断语句  循环条件
			sum1 += 1 // js脚本 循环体
			console.log(sum1); // js脚本 循环体

			i++; //增量          操作表达式
		}


		//do...while循环  do {条件是否满足都会执行一次}
		var i = 0;
		var sum2 = 0; //   初始化
		do{
			sum2+=1;
			console.log(sum2); 
			i++;
		}while(i<11)

js函数

      //一. 函数:封装代码 复用代码块
      
	function XiaoQiao(name,age){//形参 变量
		console.log(name,age);
		console.log(11);//11
		return name +age;//返回 后面代码不执行
		console.log(66);
	}
	XiaoQiao('xqxq',21);//实参 xqxq 21
 //2.
      console.log(a);
      var a=10; //在下覆盖log(a)、a()
          
      //函数也会提升 比变量提升的优先级更高 重名覆盖函数 不能执行
        function a(){//在上提升
			console.log(1128);
		}
		a()

特殊函数

       //1.自定义函数
		fun()
		function fun(){
			console.log(1156);
		}
		fun() //1156 x2
	
   
        //2.函数表达式
		//fn()//报错
		//函数表达式 先声明变量 fn()不能在上面调用
		var fn =function(){
			console.log(911);
		}
		fn()//911
		
   
        //3.fun1高阶函数 callback回调函数
		function fun1(callback){
			callback && callback('xq',23)
		}
		
		fun1 (function(name,age){
				console.log(name,age);
			})
			
		//fun2高阶函数 
		function fun2(){
			return function(name,age){
				console.log(name,age);
			}
		}
		fun2()('yyqx',22);


//liff函数 自执行函数
// (函数调用
;(function(a){//形参
	console.log(a);//输出:111
})(111)//实参
    

函数封装

          //函数封装 一个函数做一件事 1-100质数
		//3.求因数数量和
		function getCount(i){
			var sum=0;//因数的数量和
			for (var j=1;j<=i;j++) {
				if(i % j ==0){
					sum+=1
				}
			}
			return sum;
		}
		//2.判断是否为质数
		function isZs(i){
			if (getCount(i)==2) {
				return true;
			} else{
			    return false;
			}
		}
		//1.求自然数 输出质数
		function getZs(i){
			for(var i=1;i<=100;i++){//自然数
				if(isZs(i)){//是否是质数
					console.log(i+'质数');
				}
			}
		}
		getZs() //输出:2 3 5 7 9...97

//哥德巴赫猜想算法

//大于5的整数可以拆分为3个质数之和 大于5的整偶数可以拆分为2个质数之和
		//3.求因数数量和
		function getCount(i) {
			var sum = 0; //因数的数量和
			for (var j = 1; j <= i; j++) {
				if (i % j == 0) {
					sum += 1
				}
			}
			return sum;
		}
		//2.判断是否为质数
		function isZs(i) {
			if (getCount(i) == 2) {
				return true;
			} else {
				return false;
			}
		}
//1.自然数  1-100偶数
for (var i = 1; i <= 100; i++) { //求自然数
	if (i % 2 == 0) {
		for (var a = 1; a < i; a++) {
		  if (isZs(a) && isZs(i-a) && i>=5) {
	            console.log(i+'偶数拆分为'+a+'和'+(i-a)+'这俩质数之和');
					}
				}
			}

		}

21.斐波拉契 数列

// 1.递归 调自己本身这个函数 (无条件则死循环)
		var sum =0;
		function fun(a,b){
			console.log(a+b);
			sum++;
			if (sum>10)  return;//10次3
			fun(1,2)
		}
		fun(1,3)//4
		                   
		//2.斐波拉契数列前20个1、1、2、3、5、8、13、21、34、……
		for(var i=0;i<20;i++){
			console.log( fn(i));
		}
		function fn(i){
			if(i == 0){
				return 1;
			}else if(i==1){
				return 1;
			}else{
				return fn(i-1)+fn(i-2);
			}
		}
		
		
		//1+2+3+4+5+...+n的和  n=10 
		function getCount(n){
			var flage=n> 0&& (n+=getCount(n-1));//10+9+8+7...+1
			return flage;
		}
		console.log( getCount(10));