JavaScript基础语法5想成为优秀的java架构师看这里→乐比特免费公开课(腾讯课堂)如需关注请点击右侧了解更多(记住群密码:66)→这是一条不归路,有秃顶风险,请慎重选择!函数函数或方法。它是一个预先设置好的函数代码块,可以根据不同的输入参数重复调用并返回不同的值。函数也是对象。函数定义函数定义有三种方式:函数声明语句、函数定义表达式、函数构造函数函数声明语句函数函数名([参数列表]){}例如:functionfoo(){console.日志(1);}富();这样定义的函数具有声明提升foo()的作用;functionfoo(){console.log(1);}//变量声明提升console.log(a);变量a=2;函数定义表达式由表达式定义的函数,函数名可选varvariablename=function([parameterlist]){}variablename();例如:varfun=function(){console.log("Hello");}fun();这种写法是将一个匿名函数赋值给一个变量。这时,这个匿名函数又被称为函数表达式,因为只有表达式才能放在赋值语句的等号右边。函数构造函数Function构造函数接受任意数量的参数,但最后一个参数始终被认为是函数体,而前面的参数枚举新函数的参数。varadd=newFunction('x','y','return(x+y)');//相当于functionadd(x,y){return(x+y);}add();注意:js中的函数没有重载,同名函数会被后面的函数覆盖。js允许参数个数不定,arguments对象函数的参数、调用、return语句参数在后面介绍。函数运行时,有时需要提供外部数据,不同的外部数据会得到不同的结果。这个外部数据称为Parameters,定义时的参数称为形参,调用时的参数称为实参。实参可以省略,所以对应的形参是未定义的。占上风。可以给参数赋默认值:当参数为特殊值时,可以赋默认值。参数传值时,传递一个副本;传递引用的时候,传递的是地址,操作的是同一个对象。//调用函数时,实参可以省略,对应的形参为undefinedfunctionadd(a,b){console.log(a+"+"+b+"="+(a+b));}add(3,4,5)//3+4=7add(1);//1+undefined=NaNadd();//undefined+undefined=NaN//如果函数参数同名(一般notdoingthis):inWhenusing,thelastvalueshallprivatefunctionadd2(a,a){console.log(a);}add2(1,2);//给参数一个默认值functiondefaultValue(a){一个=一个||“A”;returna;}console.log(defaultValue());functionf(a){//如果参数a不为undefined或null,取自己的值,否则给一个默认值(a!==undefined&&a!==空)?一=一:一=1;returna;}console.log(f());//传递值varnum=12;functionchange(n){n=30;}change(num);console.log(num);//通过引用传递varobj={name:"tom"};functionparamter(o){o.name=2;}paramter(obj);console.log(obj.name);//一个新的数组赋值给参数ovarobj2=[1,2,3];函数参数2(o){o=[2,3,4];o[1]=3;}paramter2(obj2);console.log(obj2)函数调用1.普通调用方法函数名([实参]);有返回值可以用变量接收,如果没有返回值的函数收到,它是未定义的。2、函数调用方式functionadd(a,b){returna+b;}varsum=add(1,2)console.log(sum);3、方法调用方式varo={m:function(){console.log(1);}};o.m();return函数的执行可能会有返回值,需要使用return语句返回结果。不需要return语句,如果没有,函数什么都不返回,或者返回undefined。作用:1.在没有返回值的方法中,用于结束方法。2.有返回值的方法,一个是用来结束方法,一个是把值带给调用者。函数作用域函数作用域:global(全局变量)和local(局部变量)1.全局变量和局部变量同名问题varbox=1;//全局变量函数display(box){varbox=3;//这里的box与全局变量box无关。这里的方框是传递的参数,相当于新声明的局部变量varb=2;//局部变量console.log("box-->"+box);}display();//b无法访问console.log("b-->"+b);2.在函数中定义变量时,如果不加var关键字,使用后会自动成为全局变量functionfun(){a=100;}fun();alert(a);内置对象参数只在函数内部定义,保存了函数的实际参数。ArrayArray对象Date日期对象,用于创建和获取日期Math数学对象StringString对象,提供对字符串的一系列操作指定的子字符串,从左到右。如果没有找到返回-1。substr(m,n)返回给定字符串中从位置m开始的n个字符。如果省略参数n,则表示到达字符串的末尾。?substring(m,n)返回从位置m开始到位置n结束的给定字符串。如果省略参数n,则表示到达字符串的末尾。?toLowerCase()将字符串中的所有字符转换为小写。?toUpperCase()将字符串中的所有字符转换为大写。?长度属性(而非方法)返回字符串的长度。Math?Math.random()随机数?Math.ceil()向上取整,大于最大整数?Math.floor()向下取整,小于最小整数StringDate//获取日期?getFullYear()年?getMonth()month?getDate()day?getHours()hour?getMinutes()minute?getSeconds()second//设置日期?setYear()?setMonth()?setDate()?setHours()?setMinutes()?setSeconds()?toLoacaleString()转换为本地时间字符串说明:getMonth():获取值:0~11(January~December)setMonth():设置值时0~11toLocaleString():根据本地时间将Date对象转换为字符串并返回结果。Object对象(object)是JavaScript的核心概念,也是最重要的数据类型。JavaScript中的所有数据都可以视为对象。JavaScript提供了String、Date、Array等几种内置对象。对象是具有属性和方法的特殊数据类型。简单地说,所谓对象就是由若干个“键值对”组成的无序数据集合(核心价值)。通过JavaScript,我们可以创建自己的对象。JavaScript对象所满足的“键值对”格式称为JSON格式,以后我们会经常看到它,也就是伟大的JSON对象。{key:value,key2:value2,...}对象创建JS创建自定义对象有三种方式:字面形式创建对象、通过newObject对象创建对象、通过Object对象对象的create方法创建对象.Createvarobjectnameinliteralform={};//创建一个空对象varobjectname={key:value,key2:value2,...}varobj={'name':'hello',age:12、sayHello:function(){console.log("我是对象中的一个方法");},courses:{javase:4,javascript:3},isLike:true,members:[{name:"小红",age:20},{name:"小绿",age:22},{name:"小蓝",age:27},{name:"小黄"}]};通过newObjectName=newObject();创建一个var对象//创建一个空对象varobj=newObject();obj.name='zs';obj.age=18;console.log(obj);通过Object对象的create方法创建varobjectname=Object.create(null);varobj=Object.create(null);obj.name='ls';obj.gender=trueconsole.log(obj);varobjn=Object.create(obj);objn.age=18;console.log(objn);console.log(objn.gender)对象的序列化和反序列化序列化是将JS对象序列化为字符串,反序列化是将字符串反序列化为JS对象。通过调用JS中的JSON方法,可以将对象序列化为字符串,也可以将字符串反序列化为对象。//序列化对象,将对象转为字符串JSON.stringify(object);//反序列化,将Json字符串转为对象。JSON.parse(jsonStr);thisthis是JavaScript语言中的一个关键字。表示函数运行时自动生成的内部对象,只能在函数内部使用。this的值会根据情况发生变化关于函数的使用位置。但是有一个通用的原则,就是this指的是调用函数的对象。在函数中使用this在函数中使用this是全局调用,代表全局对象,通过window对象访问。函数测试(){this.x=1;console.log(this.x);}test();console.log(x);//相当于属性varx=10;console.log(x)//10functiontest(){console.log(this.x)//10this.x=1;console.log(this.x)//1console.log(this)}test();控制台日志(x);//1console.log(this);在对象中使用this对象中的函数使用this来表示当前的上级对象。varobj={name:'张三',age:20,sayHello:function(){console.log(this.name)console.log(this)}}obj.sayHello();功能测试(){控制台。log(this.x)//10this.x=1;console.log(this.x)//1console.log(this)}test();console.log(x);//1console.log(this);#####在对象中使用this对象中的函数使用this表示当前上级对象。varobj={name:'张三',age:20,sayHello:function(){console.log(this.name)console.log(this)}}obj.sayHello();