首页 > 代码库 > js基础四
js基础四
函数级作用域在js当中,只有函数才会产生作用域,而if、whhile、for都不会产生作用域
例var a =1;var fn1 = function(){
var a = 10;
};var fn2 = function(){
console.log(a); //这里的打印结果为1
};fn1();fn2();
例var a = 10;
function fn(b){ 系统自动声明b: var b = 10;
a =30; function fn1(){ var a = 40; console.log(a); 打印结果为40 } function fn2(){ a = 50; 给a赋值,这里fn2没有定义 console.log(a); 打印结果为50 } fn1(); 这里的意思是调用函数fn1 fn2(); 这里的意思是调用函数fn2 console.log(a); 打印结果为50
}fn(a);console.log(a); 打印结果为50
后面需要用到函数的计算的结果需要用到返回值return,希望用到函数的计算结果,后续需要用到就加,不需要就不需要加
变量提升:在声明变量的时候,会把当前变量声明的时机放到当前作用域的开头
只有变量的声明才有提升,变量的赋值没有提升
cosole.log(a);var a = 10; 这里是简写的,一个声明var a; a = 10,将10赋值给a
变量提升的含义:var a;console.log(a);这里打印结果为没有定义 undefined a = 10; a的赋值10不会提升,所以上面的打印结果是没有定义
对象 用花括号括起来,是无序集合
var obj = {
name:‘Bob‘, 数据与数据之间用,隔开 这里name为属性名,后面的Bob;属性名可以加上‘‘,如‘name‘ =‘bob‘,不加也没有影响 age:20, gender: ‘male‘ 123:flase, 这里的属性名可以以数字开头,但是 ‘test+test‘: ‘hello‘, 这里可以使用+,但是如果这里属性名不用 ‘‘的话会出错,
}console.log(obj);
console.log(obj.name) 取对象属性的值方式一:obj的对象name属性,加点:. 点会把点后面的名称直接作为属性名 .后面的值作为属性取值,
console.log(obj[‘name‘]) 方式二:加方括号:会把 []中的返回值作为属性名// console.log(obj.test+test) 打印结果为unfi 使用点:对于一些特殊的属性名,比如使用数字开头,或者属性名中间出现了一些符号,这些属性只能通过方括号来取console.loe(obj[‘123‘]) 使用.的话,代码会紧凑,更直观,推荐使用.来取属性值
function fn(a,b,c){
var arr = [a,b,c]; for(var i = 0;i < arr.length-1;i++){ 数组排序 for(var j = 0; j< arr.length-i-1;j++){ 前length-i次中的最大的放在最后边 if(arr[j] > arr [(j + 1]){ var temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } }
}
var arr = [1,2,3]console.log(arr[‘0‘]) 这里0,加不加‘‘打印的结果是一样的,对于数组,对象可以使用的格式,数组也可以. []console.log(arr[‘length‘]) 这里会打印这个数组的项数,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)
数组join的使用方法var arr = [1,2,3,‘hello‘];var result = arr.join ();数组每一项都拼接在一起console.log(arr);console.log(result);
数组pop使用方法:把数组的最后一项删掉,会修改数组本身,将删除的一项作为返回值的方法 要是取最后一项的话,用[]取值就可以var arr = [1,2,3,‘hello‘];var result = arr.pop ();console.log(arr);console.log(result);
数组pus使用方法:给数组添加一个或多项新项,第一项后的项数可以写也可以不写,会修改数组本身 并且返回新长度,添加新项是添加到末尾的;如果是添加数组的话,把数组作为一项(保留数组),添加到末尾中去,例2var 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方法:修改元素组,把数组的从左到右的排序,改成从右到左 shift方法:删除数组第一项并将删除的一项作为返回值的方法
slice方法,需要填写开始的角标,和结束的角标(结束的角标5不包括在内,不会被选取到)角标可以为负数,只有slice这里可以使用负数,代表从右往左数的对象 截取数组的片段 不会修改数组本身,截取出来的长度比实际的少1var 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 = [2,1,3,7,4]; var arr = [23,1,300,7,4]; 后面的这个打印结果为1,23,300,4,7
arr.sort(); console.log(arr); 打印结果为1,2,3,4,7 指定sort排序比较规则,放在一个函数中 function rule(a, b){ if(a < b){ 比较a,b哪一个在前面 如果要让a出现在b的前面,返回小于0的数; return -1; }else{ 要让b出现在a的前面,就返回大于0的数 return 1; }
}arr.sort(rule); arr.sort(rule());后面这个表示调用之后的返回值,先计算实参,打印的话还是按照默认的排序规则传进去的console.log(arr)
以上简写 从小到大排列 要从大到小排列的话将return a - b改成return b - a function rule(a, b){ return a - b; } arr.sort(rule); console.log(arr);
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)
tostring方法:把数组转化成字符串,并返回结果shift 删除并返回数字的第一个元素unshift 向数组中的开头添加新的元素
js基础四