学习笔记2

1、编写一个函数,以一个数字作为参数,把这个数字是否是质数(布尔值)作为函数的返回值。

`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));`

2、编写一个函数,把年月日分别作为这个函数的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))`

3、编写一个函数,以一个数字n作为参数,返回1! + 2! + 3! + ... + n!的结果

`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 undefined

在函数内部定义的变量,只能在函数内部使用

`functiong fn(){
console.log('hello');
//return undefined;
}`

这里的return undefined便是系统自动补上的。

在js中,只有函数才会产生作用域,而if,while,for都不会产生作用域

二、作用域链

提升函数:对于使用函数申明方式定义的函数,它的定义时机会被提到当前作用域的开头。

作用域链:当在同级中没有找所定义的变量,便会一级一级地向上找定义的变量。

`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;其实它的顺序便是:

`var a;
console.log(a);`
a = 10;

四、对象

用花括号括起来,是无序集合

`var obj={
name:'Bob',
gender:'male'
};

console.log(obj.name);
或者用:
console.log(obj['name']);`

取对象属性的两种方式:点和方括号(推荐优先使用点这种方式)

1、点会把点后面的名称直接作为属性名,而方括号会把方括号里面的返回值作为属性名。

2、对于一些特殊的属性名,比如使用数字开头,或者属性名中间出现了一些符号(+等,就是在命名规范中不合法的一些),这些属性名只能通过方括号来取。

`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)

五、Array 对象方法

1、concat() 连接两个或更多的数组,并返回结果。

2、join() 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。

数组join的使用方法

`var arr = [1,2,3,'hello'];
var result = arr.join ();数组每一项都拼接在一起
console.log(arr);
console.log(result);`

3、pop() 删除并返回数组的最后一个元素

数组pop使用方法:把数组的最后一项删掉,会修改数组本身,将删除的一项作为返回值的方法 要是取最后一项的话,用[]取值就可以

`var arr = [1,2,3,'hello'];
var result = arr.pop ();
console.log(arr);
console.log(result);`

4、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);

5、reverse() 颠倒数组中元素的顺序。

reverse方法:修改元素组,把数组的从左到右的排序,改成从右到左

6、shift() 删除并返回数组的第一个元素

shift方法:删除数组第一项并将删除的一项作为返回值的方法

7、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);

8、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})`

9、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)

10、toSource() 返回该对象的源代码。

11、toString() 把数组转换为字符串,并返回结果。

12、toLocaleString() 把数组转换为本地数组,并返回结果。

13、unshift() 向数组的开头添加一个或更多元素,并返回新的长度。

14、valueOf() 返回数组对象的原始值

posted @ 2016-10-23 20:02  王世梅  阅读(209)  评论(0编辑  收藏  举报