JavaScript-day2
函数:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>js函数</title> <script> //函数式js中的最小功能单位 //创建函数 function add(num1, num2) { return num1 + num2; } console.log(add(1, 2)); //意外来了 console.log(add(1, 2, 3));//不报错,而且调用函数啦。。执行的是前两个参数。 //实参可以和形参参数不匹配,说明JavaScript的函数参数列表不可以作为鉴别不同方法的特征。。。只能函数名区分 console.log(add());//结果为NAN..如果实参小于形参,那就是未传递的形参就是undefined。。任何数字+undefined都是NAN /* 内置对象: */ //运行js代码的时候,由运行环境已经创建好的一些对象。。。我们可以直接使用 //获取函数的实参个数 function add2(num3, num4) { console.info(arguments);//arguments类似于java的可变形参列表。在js中可以当成一个数组来使用。。。(伪数组) //比较arguments是不是一个数组 console.info([1, 3, 5] instanceof Array);//instanceof 对复杂数据类型做所属判断用的,和java一致、 console.info(arguments instanceof Array);//false。。他不是一个数组。使用方式类似于数组 console.log("===========arguments,不是数组,却是可以和数组一样的遍历方式==============") //arguments不具有数组的 push , pop 等方法 var element = 0; for (let index = 0; index < arguments.length; index++) { element += arguments[index]; } console.log(element); return num3 + num4; } add2(123, 3243, 345643645, 657567, 75345353, 234); //匿名函数 var temp = function (x1, x2) { return x2 - x1; } //可以这样调用 console.log(typeof temp(55, 11));//结果是number console.log(typeof temp);//function console.log(temp(55, 11));//-44 //匿名函数调用方式二:自执行 var temx = (function (x1, x2) { return x2 - x1; })(1, 5); //函数体()..... console.log(temx); //函数作为参数传递进去:函数作为参数和返回值 function cal(func1, numb1, numb2) { return func1(numb1, numb2); } function funcadd(number1, number2) { return number1 + number2; } var result = cal(funcadd, 1, 21); //除零是无穷大: (function (numx, numy) { console.log(numx / numy); })(1, 0);//Infinity //函数嵌套 function distance(x1, y1, x2, y2) { function square(x) { return x * x; } return Math.sqrt(square(x1 - x2) + square(y1 - y2)); } var result1 = distance(0, 0, 3, 4); //外层函数不能调用:函数内层函数。。。 // console.log(square(1));报错。。。。。 console.log(result1); // 5 function swtic(op, numxx, numyy) { switch (op) { case '+': return numxx + numyy; case '-': return numxx - numyy; case '*': return numxx * numyy; case '/': return numxx / numyy; } } </script> </head> <body> <!-- js函数 --> </body> </html>
对象:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>作用域</title> <script> /* 全局作用域||局部作用域 */ var age = 10;//这就是全局作用域 //局部作用域 function abc() { var age1 = 11;//局部作用域 } // console.log(age1);//会报错的。。未声明错误。。。。。 //。注意局部作用域:是在函数内部。。其他的代码块中默认是全局作用域。 if (true) { var able = "Hello World"; } else { var able = "网吧我来了"; } console.log(able);//没问题不报错。。。这不是方法内部(function)的,所以就是全局的作用域。外部可以访问得到。 var sum = 0; //js没有块及作用域 for (var index = 0; index < 5; index++) { sum += index; } console.log(sum + ":" + index);//for块里面的变量index,在外部可以访问得到,说明js没有块级作用域。。 //全局变量都是挂载在Window对象上面的(window是js里面的顶级对象。。。) var a1 = 1; window.a2 = 20; console.log(window.a1)//这可以访问 console.log(a2)//这样可以访问。。。 //说明,默认全局是挂载到window对象上面的,还有就是window对象属性(方法)访问不需要对象.属性名。 name = "郭童";//这句话是赋值,不是声明,因为window对象上面有这个变量,原window对象上的name属性是“”; console.log(name);//一样的:郭童 console.log(window.name);//是一样的:郭童 testx = "gt0";//这句话是声明一个变量,并且给这个变量赋值,还有将这个变量挂载到window对象、 //原因是window对象本身没有带这个textx属性。 console.log(window) //使用var关键字声明的变量才是真正的全局变量,没有使用var或者使用window.属性的方式声明的变量我们一般认为window对象的属性。 function fun() { var next = 101; netx1 = 101; console.log(next); } fun();//调用方法 // console.log(next);//这里时机上打印的是window对象的next属性,所以这里打印不到var定义的局部变量,所以报错。 //当方法内部的,没有var声明。。。那就是window对象的属性,这时候不管你在函数内还是函数外都可以访问得到。 console.info(netx1);//成功:101 //变量搜索查找:就近原则。。。。从内向外,层层递进,找到为止。。。。 var xxx1 = 20; function abcd() { var xxx1 = 10; function cndf() { xxx1 = 5; console.log(xxx1); } cndf();//5 } abcd();//这里打印的是5.。但是变量原值是10,进入子方法重新赋值为5.。。 function f1() { var num = 123; function f2() { console.log(num); } f2(); } var num = 456; f1();//打印的是123 //js预编译 console.log(roless) var roless =10;//会预编译,先把变量声明提前。。但是不会赋值。。所以上一步是undefined。。 //这里会报错,变量未定义声明。。。。 console.log(roless) roless =10; //function方法,会自动提升到当前作用域开头 //匿名方法,先调用,后定义,就会报错 not is function。。 //类似 funxxx() function funxxx(){ console.log("hello world") } //报错。。。。。 funyyyy() var funyyyy=function(){ console.log("hello world") } console.log(window) console.log(name)//这里打印::李四 name= "李四";//window本身属性,,:name。在代码执行之前就会执行初始化赋值(预编译) //非window挂载的对象,n那么这时候不会去挂载到window对象。。那就不会提前声明与赋值。。会报错--> </script> </head> <body> <!-- 作用域 --> </body> </html>
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>JavaScript对象</title> <script> //初始化创建对象:字面量创建方式一: var Person = { name: "GT", age: 16, salary: 1990, say: function () { console.log("Hello World"); console.log(this.age);//方法内部的this,指针指向当前作用域的对象本身。。 } } //全局作用域的this指向的是window对象。。 //使用 console.log(Person.age); Person.say(); //对象:{key : value} //所有的·key都是字符串类型。。。。。。。。 var MingRen = { name: "鸣人", sex: "男", age: 19, skile: function () { console.log("影分身术") ; } } var obj =new Object(); obj.name="鸣人"; obj.age=19; obj.sex="男"; obj.skile=function(){ console.info("影分身术"); } //第三种方法:构造器创建对象: function thisObij(name,age){ this.name=name; this.age=age; this.say=function(){ console.log(111) } } var tem = new thisObij("tom",14); //遍历对象 for(var key in tem){ //key是字符串 console.log(tem[key]); } </script> </head> <body> </body> </html>
内置对象:
function getRandom(min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; }
作者:隔壁老郭
个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!
Java入门到入坟
万水千山总是情,打赏一分行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主,哈哈哈(っ•̀ω•́)っ✎⁾⁾!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南