8-28 钟诚 js 函数API
1.arguments是函数自带的 不用定义 可以接受所有传入函数内部的参数
function show(a,b){
console.log(arguments)
}
show(2,4)
练习:使用arguments 根据传入的函数参数长度,判断到底有多少个女朋友
function girl(name){
switch(arguments.length){
case 1:console.log("XX有1个女朋友");break;
case 2:console.log("XX有2个女朋友");break;
case 3:console.log("XX有3个女朋友");break;
case 4:console.log("XX有4个女朋友");break;
case 5:console.log("XX有5个女朋友");break;
default:console.log("数不清")
}
}
girl("约好天","张林","1","老烟囱")
2.数组
单纯使用变量只有一个值,通过数组可以将多个变量保存到数组中,使用的时候直接调用数组
下标:数组中的每个元素 用下标进行标识 从0开始从左向右
方法 arr.length *//获取长度 数组长度-1就是最后一位的下标*
对象:object
var obj={
name:"一颗",
sex:"男",
age:"22",
}
对象使用一对双花括号,里面就是我们要保存的数据,每个数组都有自己的名字
3.引用类型
var obj1={
name:'liming',
sex:'man'
}
var obj2=obj1;
obj2.name='lidaming';
console.log(obj1.name) //lidaming
练习 使用原始数据类型,修改变量的值(string,number。。。。)
var a="c";
var b=a;
b=2;
console.log(b)
var arr=[1,2,3]
arr[1]=4;
console.log(arr)
var fn2=fn1()
console.log(fn2)
//闭包 三概念
var add = (function () {
var counter = 0;
return function () { return counter += 1; }
})();
console.log(add()); // counter=1;
console.log(add()); // counter=2;
console.log(add()); // counter=3;
执行了3次。第一次以后,内层作用域里的变量得不到释放,执行的时候,一直就在这个作用域下发挥作用,同时,因为内部,闭包的函数得不到释放,所以一直牵引着外层函数也得不到释放。
return 返回到当前所在作用域内的值
console.log(add())
console.log(add())
var ads=add();
console.log(ads)
console.log(ads)
console.log(ads)
ads=null;
console.log(ads)
var ads=add();
// 只保存第一次执行的结果
console.log(ads)
console.log(ads)
console.log(ads)
使用对象字面量创建对象
创建对象
var obj = {
name: "liLeilei",
sex: "男",
age: 20
}
使用内置构造函数创建对象
创建空对象
var obj = new Object()
// 添加属性
obj.name = "lileilei";
obj.sex = "男";
自定义构造函数创建对象
function Person(name,sex){
this.name=name;
this.sex=sex;
}
var Person1=new Person('权哥','男')
console.log(Person1)
var Person2=new Person('陈哥','无性别')
console.log(Person2)
var object = {
name:"keke",
sex:"nan",
}
打点调用
\1. console.log(object.name)
2.console.log(object["name"])
5.遍历 for in
for (var key in 对象){
//key代表对象中的每一个属性;
//对象[key]获取每个属性的值
}
var obj ={
name:"陈哥",
height:"180",
weight:"90",
study:"博士后",
say(){
console.log(${*this*.name}身高${*this*.height}体重${*this*.weight}斤,学历${*this*.study}
)
}
}
obj.say();
for(var key in obj){
// console.log(key)
console.log(obj[key])
}
//1.Math对象
//取整
console.log(Math.ceil(2.111111111)) //向上取整3
console.log(Math.floor(2.111111)) //向下取整 2
console.log(Math.round(4.4444444)) //四舍五入取整4
//乘方
console.log(Math.pow(2,2)) // 4
console.log(2**2) // 4
//开平方
console.log(Math.sqrt(8)) // 3
//最大值和最小值
console.log(Math.max(1,4,6,23,63,72,24,6,43,51)) //输出最大值
console.log(Math.min(412,52,51,123,32,7,646,36)) // 输出最小值
//问题:不支持查找一个数组中的最大值/最小值持
//解决方案**
var arr=[1,4,5,2,7,4,8,9]
console.log(Math.max.apply(null.arr))
//随机数
console.log(Math.round()) //0-1随机 取不到1
Math.floor(Math.random()*9+1) //随机1-10
//圆周率
console.log(Math.PI)
//绝对值
console.log(Math.abs(-100)) // 输出100
//new Boolean
console.log(new Boolean("一颗"))
//Boolean
console.log(Boolean(""))
number
console.log(new Number(true)) //将数据转为数值,返回对象
console.log(Number(true)) //将数据转为数值,返回数值
//取小数点的后几位 toFixed(n)
var num=1.234567; // 1.235
console.log(num.toFixed(3))
获取Date对象中的日期时间
getFullYear()
getMonth()
getDate()
getHours()
getMinutes()
getSeconds()
getMilliseconds()
getDay()
getTime()
函数构造
var 函数名=new Function("参数名1","参数名2",...,"函数体;return 返回值")
var fn=new Function("name","sex","console.log(name.sex)")
fn("陈哥","女")
开发禁止使用,但是面试可能会考
(function() {
var a = b = 3;
})();
console.log("b defined? " + (typeof b !== 'undefined'));
console.log("a defined? " + (typeof a !== 'undefined'));
var arr=new Array()
arr[6] = '开学快乐';
console.log(arr)
console.log(arr.length)
//数组翻转
var arr=[1,2,3,4,5]
arr.reverse()
console.log(arr)
字符串翻转 也就是倒序
function reverseString(str) {
var str2 = "";
for (var i = 0; i < str.length; i++) {
str2 += str.charAt(str.length - i - 1);
}
console.log(str2)
return str2;
}
reverseString("abcdef");
function reverseString(str) {
var str2 = "";
for (var i = str.length-1; 0<= i; i--) {
str2 += str.charAt(i);
}
console.log(str2)
return str2;
}
reverseString("abcdef");
评论