`function isPrime(number){ if(number === 1){ return false; } var result = true; for(var i = 2;i < number - 1;i++){ if(number % i === 0){ result = false; break; } } return true; } console.log(isPrime(3));`
`function getDay(year,month,date){ var rules = [ 31, isPrime(year) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ]; var result = 0; for(var i = 0;i <month -1;i++){ result = result + rules[i]; } result +=date; return result; } function isPrime(year){ if((year % 4===0 && year % 100 !==0) || year % 400 ===0){ return true; } return false; } console.log(getDay(2016,3,10))`
`function sumOfjiecheng(n){ var result = 0; for(var i =1;i<=n;i++){ var number = 1; for(var j =1;j<=i;j++){ number = number * j; } result = result + number; } return result; }`
若是函数中没有return语句,系统会自动补上return undefinedweb
在函数内部定义的变量,只能在函数内部使用数组
`functiong fn(){ console.log('hello'); //return undefined; }`
这里的return undefined即是系统自动补上的。函数
在js中,只有函数才会产生做用域,而if,while,for都不会产生做用域spa
提高函数:对于使用函数申明方式定义的函数,它的定义时机会被提到当前做用域的开头。code
做用域链:当在同级中没有找所定义的变量,便会一级一级地向上找定义的变量。对象
`var a =10; function fn(b){ a=30; function fn1(){ var a = 40; console.log(a); } function fn2(){ a = 50; console.log(a); } fn1(); fn2(); console.log(a); } fn(a); console.log(a);`
所得的结果即是:40,50,50,50排序
在申明变量的时候,会把当前变量的时机放到做用域的开头,只有变量的申明才有提高,变量的赋值没有提高。继承
`console.log(a); var a = 10;`
所得的结果即是undifined;其实它的顺序即是:ip
`var a; console.log(a);` a = 10;
用花括号括起来,是无序集合作用域
`var obj={ name:'Bob', gender:'male' }; console.log(obj.name); 或者用: console.log(obj['name']);`
取对象属性的两种方式:点和方括号(推荐优先使用点这种方式)
一、点会把点后面的名称直接做为属性名,而方括号会把方括号里面的返回值做为属性名。
二、对于一些特殊的属性名,好比使用数字开头,或者属性名中间出现了一些符号(+等,就是在命名规范中不合法的一些),这些属性名只能经过方括号来取。
`var arr=[1,2,3]`
这种方式称为自变量数组。
对象和数组的区别例:
`var obj = { 0 : 1, 1 : 2, 2 : 3, } console.log(obj) console.log(obj['length'])`
这个是对象,不会打印出数组的项数,属性的变化须要定义了才会有
array对象方法 构建数组如下三种方式: var arr = [1,2,3]这个是数组字面量,若是没有特殊状况,就是用这个方式,比如下三种方法更简便
一:condytuvyot是处理继承的
`var arr = new Array() 赋值的时候不够直观 arr[0] =1; arr[1] =2; arr[2] =3;`
二: var arr = new Array(5)
不存储数据的话,length为5,若是arr[5]的话,打印出来的长度为6
三:var arr = new Array(1,2,3)
一、concat() 链接两个或更多的数组,并返回结果。
二、join() 把数组的全部元素放入一个字符串。元素经过指定的分隔符进行分隔。
数组join的使用方法
`var arr = [1,2,3,'hello']; var result = arr.join ();数组每一项都拼接在一块儿 console.log(arr); console.log(result);`
三、pop() 删除并返回数组的最后一个元素
数组pop使用方法:把数组的最后一项删掉,会修改数组自己,将删除的一项做为返回值的方法 要是取最后一项的话,用[]取值就能够
`var arr = [1,2,3,'hello']; var result = arr.pop (); console.log(arr); console.log(result);`
四、push() 向数组的末尾添加一个或更多元素,并返回新的长度。
数组pus使用方法:给数组添加一个或多项新项,第一项后的项数能够写也能够不写,会修改数组自己 而且返回新长度,添加新项是添加到末尾的;若是是添加数组的话,把数组做为一项(保留数组),添加到末尾中去,例2
`var arr = [1,2,3,'hello']; var result = arr.pus ('world'); console.log(arr); console.log(result);`
例2
var arr = [1,2,3,'hello']; var arr2 = [nh,nk] var result = arr.pus ('arr2'); console.log(arr); console.log(result);
五、reverse() 颠倒数组中元素的顺序。
reverse方法:修改元素组,把数组的从左到右的排序,改为从右到左
六、shift() 删除并返回数组的第一个元素
shift方法:删除数组第一项并将删除的一项做为返回值的方法
七、slice() 从某个已有的数组返回选定的元素(负数的写法只能在slice中使用。)
slice方法,须要填写开始的角标,和结束的角标(结束的角标5不包括在内,不会被选取到)角标能够为负数,只有slice这里可使用负数,表明从右往左数的对象 截取数组的片断 不会修改数组自己,截取出来的长度比实际的少1 var arr = [1,2,3,'hello',4,5,'js'];
var result = arr.slice ('3,5'); var result = arr.slice ('3,-2'); console.log(arr); console.log(result);
八、sort() 对数组的元素进行排序(能够传入一个参数,规定它的一个排序规则,可这个参数必定是一个函数),若是不定义比较规则,它是按照首字符的大小进行排序的。
`var arr=[23,1,300,7,4] //定义排序规则的函数 function rules(a,b){ if(a<b){ //若是要让a出如今b的前面,返回小于0的数 return -1; }else{ //若是让b出如今a的前面,返回大于0的数 return 1; } } arr.sort(rule); console.log(arr);`
也能够将代码简化为:
`function rules(a,b){ return a-b;(从小到大排列) //return b-a;(从大到小排列) } arr.sort(rule); console.log(arr);`
若是让它设为匿名函数的方法:让它从小到大排序:
`arr.sort(function(a,b){return a-b})`
九、splice() 删除元素,并向数组添加新元素。
splice方法:做用一。删除数组中间的某一部分 须要填写两个参数,一个数删除的角标,第二个参数写须要删除几项 var arr = [23,1,300,7,4] var result = arr.splice(2,1) console.log(arr); console.log(result); 这个是删除的项的返回值 做用二。替换的特性,替换数组中的某一部分 var arr = [23,1,300,7,4] var result = arr.splice(2,1,400,500) console.log(arr); console.log(result) 做用三。在数组中某个位置插入新项 var arr = [23,1,300,7,4] var result = arr.splice(3,0,100,200) 3表示在角标为3的位置插入,0表示不删除数组中的项 console.log(arr); console.log(result)
十、toSource() 返回该对象的源代码。
十一、toString() 把数组转换为字符串,并返回结果。
十二、toLocaleString() 把数组转换为本地数组,并返回结果。
1三、unshift() 向数组的开头添加一个或更多元素,并返回新的长度。
1四、valueOf() 返回数组对象的原始值