通知短信+运营短信,5秒速达,支持群发助手一键发送🚀高效触达和通知客户 广告
## 第3天 ## ### 1.复习.html ### ~~~ <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> </body> <script> /* 数据类型 typeof 查看数据类型 1.布尔值 true false 2.undefined undefined 定义变量没有赋值 3.number 整型 浮点型 NaN not a number 不是数字的数 自己都不等以自己 参与运算,结果都是NaN 100px InFinity 无穷大 2/0 类型转换 Nnmber() 默认 parseInt() 强制转化成整型 parseFloat() 强制转换成浮点型 4.string 单双引号都不解析变量 自己不能嵌套自己 解析转义符 5.function 也是一种数据类型 类似字符串,字符串怎么玩,函数就怎么玩 6.Object null 是一个特殊的额对象 空对象 */ var str = 'helo'; var str = Number(str); alert(str); </script> </html> ~~~ ### 2.函数的定义.html ### ~~~ <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> </body> <script> //函数 一种数据类型 // test(); //函数的定义1 function test() { alert(1); } //函数就像字符串一样,重新定义,会覆盖同名的函数 function test() { alert(2); } // var str = 'I Love You'; // var str = 'hi'; // alert(str); //函数定义2 function test() { alert(3); return 10; } // var func = function(){alert(3)} // 把函数的返回值赋给一个变量 // var func = test(); var func = test; // alert(func); // alert(func) // func(); //函数定义3:使用构造器 //前面所有的参数都是作为函数的形参,最后一个参数是函数体的内容 var say = new Function('a','b','return a+b'); // alert(say); var res = say(5,6); alert(res); // var str = new String('hello'); // var str1 = 'hello1'; // alert(typeof str); // alert(typeof str1); </script> <script> //定义函数的时候,如果调用跟定义不在同一个script标签里,那么必须先定义,后调用 // test(); </script> </html> ~~~ ### 3.函数的调用.html ### ~~~ <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <button onclick="test()">求虐</button> </body> <script> //函数 一种数据类型 //函数的调用1: function test() { alert(1); } // test(); //函数调用2: //赋值给字符串,取别名调用 var func = function() { alert(2); } func(); //函数调用3:在事件中调用 //见文件中body的按钮 </script> </html> ~~~ ### 4.函数定义的细节.html ### ~~~ <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <button onclick="test()">求虐</button> </body> <script> //函数 一种数据类型 /* 函数定义的细节 1.函数可以重复定义 2.形参可以不传值,返回值是undefined 3.形参不能有默认值,除了火狐 4.如果要给函数设置默认值,那么可以通过判断形参是否是undefined */ function test() { alert(1); } //形参不能有默认值,除了火狐 function test(a) { //变相的设置默认值 if (a === undefined) a = 20; // alert(2); alert(a); } test(); </script> </html> ~~~ ### 5.arguments对象.html ### ~~~ <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <button onclick="test()">求虐</button> </body> <script> //函数 一种数据类型 //func_num_args() 返回函数的参数个数 //arguments function test() { console.dir(arguments); return arguments.length; } var res = test('a','b','c','d'); alert(res); </script> </html> ~~~ ### 6.变量的作用域.html ### ~~~ <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <button onclick="test()">求虐</button> </body> <script> /* 变量的作用域 1.函数内部可以调用全局变量 2.在函数内使用var定义的变量的是局部变量,外部无法调用 */ num = 10; function test() { //var 定义变量,在函数内使用var定义的变量是局部变量 var num1 = 20; alert(num); // alert(num1); // alert(num2); function son() { var num2 = 30; alert(num); alert(num1); // alert(num2); } son(); } test(); //局部变量外部无法调用 alert(num1); </script> </html> ~~~ ### 7.奇葩的的函数.html ### ~~~ <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <button onclick="test()">求虐</button> </body> <script> /* 函数: 回调函数 把一个函数当成参数来传递的时候 匿名函数 没有名字的函数 递归函数 自己调用自己 */ //以后的使用就是这样去使用 //function test(){} /* //回调函数+匿名函数 setInterval(function(){},100); //递归函数 var res= prompt('请输入用户名','SB250'); // alert(res); function login() { var res= prompt('请输入用户名','SB250'); if(res == '我是大傻B') { alert('欢迎你,大傻B'); } else { login(); } } // login(); */ /* //自调函数 定义好函数之后自己调用自己一次 // var func = function(){}; // func(); (function(){ alert(2); })(); //类似我们的命名空间 解决js里面的命名问题 (function(){ var num = 10; alert(1); })(); */ /* //返回函数的函数 function test() { // return 'I Love You'; return function() { alert('我是返回的') } } var res = test(); // alert(typeof res); res(); */ //子函数 function test() { alert(1); function son() { alert(2); } son(); } // test(); //自己改变自己的函数 function test() { alert(1); test = function() { alert(2); } } // test(); // test(); // test(); //自宫函数 一次性的任务 function test() { alert('赞'); test = function(){} } test(); test(); </script> </html> ~~~ ### 8.构造器函数.html ### ~~~ <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <button onclick="test()">求虐</button> </body> <script> /* 构造器函数 */ //类似构造方法 function Person(name,age) { this.name = name; this.age = age; this.say = function() { alert(1); } } var p = new Person('jack',18); alert(typeof p) alert(p.name); alert(p.age); p.say(); </script> </html> ~~~ ### 9.闭包函数.html ### ~~~ <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <button onclick="test()">求虐</button> </body> <script> /* 闭包函数 : 返回函数的函数 打破作用域链 1.返回的函数保持定义时访问的范围 2.局部变量不会立即释放 */ function die() { var num = 10; function son() { alert(num); } return son; } var func = die(); func(); </script> </html> ~~~ ### 10.对象的声明.html ### ~~~ <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <button onclick="test()">求虐</button> </body> <script> /* 对象: */ //声明对象方式1: var list = [1,2,3,4]; var obj = {name:'jack',age:18}; // alert(typeof list); // alert(obj.name); //声明对象方式2: var obj = new Object(); alert(typeof obj); obj.name = 'jack'; alert(obj.name); //可以访问一个不存在的属性,返回值是undefined alert(obj.sex); //访问一个不存在的方法时,会报错,下面代码不执行 alert(obj.eat()); obj.say = function(){alert(1)}; obj.say(); //对象声明3: 找对象 //1.document.getElementById() 对象 //2.document.getElementsByTagName('tr') 得到的是一个数组类型的对象 </script> </html> ~~~ ### 11.包装对象.html ### ~~~ <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <button>hello</button> <button>world</button> <button>I Love You</button> <button>我爱你</button> </body> <script> //包装对象 var str = 'hello'; var str1 = new String('hello'); // alert(typeof str); // alert(typeof str1); // alert(str); // alert(str.substr(1,1)); //包装对象 临时对象 随用随消 str.name = 'jack'; // alert(str.name); // alert(str1.substr(1)); //真正的对象 str1.name = 'jack'; // alert(str1.name); // alert(str1); //1.找对象 var btns = document.getElementsByTagName('button'); // console.dir(btns); for (i in btns) { //在循环体里面的函数不能有变量值 btns[i].index = i; btns[i].onclick = function(){ // alert(btns[i].innerHTML); alert(this.innerHTML); // alert(btns[this.index].innerHTML); } } </script> </html> ~~~ ### 12.原型链.html ### ~~~ <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <button>hello</button> <button>world</button> <button>I Love You</button> <button>我爱你</button> </body> <script> //原型链 类似继承 function Person(name) { this.name = name; } var obj = {age:18,say:function(){alert(2)}} Person.prototype = obj; var p = new Person('jack'); alert(p.name); alert(p.age); p.say(); // </script> </html> ~~~ ### 13.扩展作业.html ### ~~~ <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <button>hello</button> <button>world</button> <button>I Love You</button> <button>我爱你</button> </body> <script> //扩展作业 使用每个类型 Math Date Array String 方法做两个小例子 // var num = Math.random() * 100; // var num = Math.floor(num); // console.log(num); String.prototype.test = function(){alert(1)} //String var str = 'hello'; // str.substr(); str.test(); // String.test(); </script> </html> ~~~