一. JS介绍 1. 定义一个变量的形式: var a; 2. Js是前台语言,用于页面的交互, 不能操作数据库 PHP,ASP,JSP 可以操作数据库, 能够进行增删改查. Node.js除外 3. Js的组成有三个部分 ECMAScript: JavaScript的语法标准. 包括变量, 表达式, 运算符, 函数, if语句, for语句等等 DOM: 操作网页上元素的API. 比如让一个盒子移动, 变色, 轮播图等等. BOM: 操作浏览器部分功能的API. 比如让浏览器自动滚动. 二. Js代码 1. Js引入 方法1: 在页面中可以直接在body的标签中放入如下标签对: <script type=”text/javascript”> // js的代码段 </script> 方法2: 引入js文件 <script type=”text/javascript” src=”demo.js”><script/> 2.语法 a. js 对缩进 换行 空格不敏感 注意每一条语句末尾都要有分号, 为了以后压缩文件 b. 单行注释用 //单行注释 多行注释用 /*多行注释*/ 3. js中输出信息的方式 a. 弹出警告框: alert语句 <script type="text/javascript”> alert("哇哈哈"); </script> b. 控制台输出: console.log() console表示"控制台", log表示"输出", 控制台是程序员调试程序的地方, 程序员经常使用这条语句输出一些东西来测试程序是否正确 c. 用户输入:prompt()语句 prompt()就是专门用来弹出能够让用户输入的对话框, 代码如下: <script type="text/javascript"> var a = prompt("今天是什么天气???") console.log(a); </script> 上面的代码中,用户输入的内容将被传递给变量a prompt()语句中 不管输入什么内容, 都是字符串类型. d. alert 和 prompt的区别: alert("从前有座山"); //直接使用,不需要变量 var a = prompt("请输入一个数字"); //必须用变量接收用户输入的数值 4. 变量 a. 变量的声明和赋值 var a = 100; b. 变量的类型 变量里面可以存数字,字符串等. 变量会自动根据存储内容的类型来决定自己的类型. 数字型:number 如果一个变量里存放了数字,那么这个变量就是数值型的 var a = 100; //定义了一个变量, 并且赋值100 console.log(typeof a); // 输出a 变量的类型, typeof()表示获取变量的类型 字符串型:string 用单引号 或双引号括起来的字符 var a = "abc"; var b = "123321"; var c = ""; //空字符串 console.log(typeof a, typeof b, typeof c); c. 连字符和加号的区别 键盘上的+ 可能是连字符, 也可能是数字的加号 console.log("我"+"爱"+"你"); //连字符, 把汉字连在一起, 输出:我爱你 console.log("我+爱+你"); // 原样输出: 我+爱+你 console.log("我"+521); // 输出:我521 console.log(1+2+3); // 先计算并输出结果, 输出6 总结: 如果两边都是数值, 此时是加号, 否则就是连字符(用来连接字符串) d. 变量值的传递(赋值) 语句: a = b; //把b的赋值给a, b值不变 e. 变量格式的转换 parseInt()可以将字符串转成数字, 例如parseInt("5"); parseInt()还具有以下的特征: 带有自动净化的功能: 只保留字符串最开头的数字, 后面的中文自动消失 例如: console.log(parseInt("2018你真帅")); 输出结果:2018 带有自动截断小数的功能:取整, 不是四舍五入 例如: var a = parseInt(5.8) + parseInt(4.7); console.log(a); // 输出:9 var a = parseInt(5.8 + 4.7); console.log(a); // 输出:10 三. 数据类型: 数据类型包括:基本数据类型 和 引用数据类型; 基本数据类型是简单的数据段, 引用数据类型指的是有多个值构成的对象 当我们把赋值给一个变量的时候, 解析器首先要确认的就是这个值是基本类型还是引用类型 1. 基本数据类型: a. number var a = 123; console.log(typeof a) //输出number //特殊情况: infinity(无限大)是number类型 var a1 = 5/0; console.log(a1) // 显示 infinity console.log(typeof a1) //number b. string var str = "123" console.log(typeof str) // string c. boolean var b1 = false; console.log(typeof b1) //boolean d. null var c1 = null; //空对象 console.log(typeof c1) //object e. undefined var d1; //只有声明,没有赋值,表示变量未定义 console.log(typeof d1) //undefined 2. 引用数据类型 Function Object Array String Date 四. 运算符 1. 赋值运算符 =, +=, -=, *=, /=, %= 2. 算数运算符 +, -, *, /, %, ++, -- 3. 比较运算符 ==, ===(等同于:值和类型均相等), !=, !==, >, <, >=, <= 注意: ==(!=)比较的是值, ===(!==)比较的是值和数据类型. 例如: var s = "1"; var n = 1; console.log(s == n); //true console.log(s === n); //false 4. 字符串拼接和字符串运算的特殊情况 a. 字符串类型的数值 和 数值类型相减 结果是数值. 例如: var a = "3"; var b = 1; console.log(a-b); //1 b. NaN(not a number)是一个number的类型 var b1 = "one"; var b2 = "two"; ret = b1*b2 console.log(ret, typeof(ret)) //NaN number c. 字符串拼接 var name = "伊拉克"; var am = "美军"; //字符串拼接 var str = "3月20日," + name + "战争爆发,以" + am + "为主的部队击溃了军队"; console.log(str); //es6 的模板字符串, tab键上面的反引号``, 添加变量名使用${变量名} var str1 = "3月20日,${name}战争爆发,以${am}为主的部队击溃了军队"; console.log(str1); 五. 数据类型转换 1. 数值类型转字符串类型 a. 隐式转换 var n1 = 123; var n2 = "123"; var n3 = n1+n2; console.log(n3); // 123123 console.log(typeof n3); //string b.强转换的两种方法: String(), .toString() var n1 = 123; var str1 = String(n1); console.log(str1, typeof str1); //123 string var num = 234; str2 = num.toString() console.log(str2, typeof str2); //123 string 2. 将字符串类型转换成数值类型: Number(), parseInt(), parseFloat() var strNum = "789.123wasdfj" var str = "666" console.log(Number(strNum),Number(str)) //NaN 666 console.log(parseInt(strNum)) //789 console.log(parseFloat(strNum)); //789.123 3. 任何数据类型都可以转成boolean类型 //不是0的都是真 var b1 = "123"; //true var b2 = 0; //false var b3 = -123; //true var b4 = Infinity; //true var b5 = NaN; //false var b6; //false var b7 = null; //false 六. 流程图控制 1. if, if-else, if-else if-else a. if语句, 例如: var ji = 20; if (ji >= 10){ console.log("恭喜你,吃鸡成功") } console.log("hello world"); //这里的代码也会执行 b. if-else例句: var ji = 20; if (ji >= 10){ console.log("恭喜你吃鸡成功") }else{ console.log("很遗憾") //这行代码不执行 } c. if-else if-else例句: if(true){ //满足条件执行这行代码 }else if(true){ //满足条件执行这行代码 }else if(true){ //满足条件执行这行代码 }else{ //满足条件执行 } 2. 逻辑与(&&), 逻辑或(||) a. 模拟如果总分 > 400分 并且数学成绩 >89 分就会被清华录取,例如 var sum = 405; var math = 90; if(sum > 400 && math >89){ console.log("清华大学录取") }else{ alert("未被录取") } b. 模拟如果总分 > 500 分 或者 英语大于 85分 被复旦大学录取,例如 var sum = 530; var english = 90; if(sum > 500 || english >85){ console.log("被复旦大学录取") }else{ aler("未录取") } c. switch语句 var game_score = "better"; switch(game_score){ case "good": console.log("玩得很好") break; // break表示退出, 如果不写就直接到遇见下一个break才退出 case "better": console.log("玩的一般般") break; case "best": console.log("恭喜吃鸡") break; default: console.log("很遗憾") } 4. while循环, do-while循环 a. while循环 例如: var i = 1; //初始化循环变量 while(i <= 9){ //判断循环条件 console.log(i); i = i+1; //改变循环条件 } 练习:1-100之间所有2的倍数 var i = 1; while(i <= 100){ if(i%2 == 0){ console.log(i) } } b. do-while循环 //不管有没有满足while中的条件, do里面的代码都会先执行一次 var i = 3; //初始化循环变量 do{ console.log(i) i++; //改变循环条件 }while(i < 10) //判断循环条件 5.for循环 for(var i=1; i<=10; i++){ console.log(i) } 练习:1-100 之间所有的数的和打印出来 sum = 0 for (var i=1; i<=100; i++){ sum += 1; } console.log(sum); 练习:在浏览器中输出直角三角形 for(var i = 1; i <= 6; i++){ for(var j=1; j<=i; j++){ document.write("*"); } document.write("<br>"); } 练习: 浏览器中输出等腰直角三角形 for(var i = 1, i<=6; i++){ //控制行数 //控制空格数 for(var s=i; s<6; s++){ document.write(" ") } for(var j=1; j<=2*i-1; j++){ document.write("*") } document.write("<br>") } 七. 常用内置对象 js中所有的事物都是对象: 字符串,数值, 数组, 函数......此外js允许自定义对象 js提供多个内置对象: String, Date, Array等等 对象是带有属性和方法的特殊数据类型 1. 数组对象 数组的创建形式有2种方式: a. 字面量方式创建, 推荐使用 var colors = ["red","green","pink"]; b. 构造函数创建, 使用new关键词 var colors = new Array(); 数组的赋值 var arr = []; //通过下标进行赋值 arr[0] = 123; arr[1] = "哈哈哈"; arr[2] = "嘿嘿"; 数组的常用方法和示例 方法或者属性 描述 concat() 连接两个或多个数组,并且返回结果 var north = ['北京','山东','天津']; var south = ['东莞','深圳','上海']; var newCity = north.concat(south); console.log(newCity); // ["北京", "山东", "天津", "东莞", "深圳", "上海"] join() 把数组的所有元素放入一个字符串里 var score = [98,78,76,100,0]; var str = score.join('|'); console.log(str); // 98|78|76|100|0 toString() 把数组转换成字符串, 并返回结果 str1 = score.toString(); console.log(str1); // "98,78,76,100,0" slice(start,end)选取数组的一部分,并返回一个新的数组 var arr = ['张三','李四','王文','赵六']; var newArr = arr.slice(1,3); console.log(newArr); // ["李四", "王文"] pop() 删除数组的最后一个元素, 并返回删除的元素 var color2 = ['black', 'pink', 'deep blue']; el = color2.pop(); console.log(el); //deep blue console.log(color2); //['black', 'pink'] push() 向数组末尾添加一个或多个元素, 并返回新的长度 arr.push('小马哥'); console.log(arr); // ["张三", "李四", "王文", "小马哥"] reverse() 反转数组的元素顺序 var names = ['alex','wusir','xiaoma','angle']; names.reverse(); console.log(names); // ["angle", "xiaoma", "wusir", "alex"] sort() 对数组的元素进行排序 按字母从a--z var names = ['alex','wusir','xiaoma','angle']; names.sort(names); console.log(names) // ["alex", "angle", "wusir", "xiaoma"] shift() 删除并返回数组的第一个元素 var color2 = ['black', 'pink', 'deep blue']; el = color2.shift(); console.log(el); //black console.log(color2);//{'pink', 'deep blue'] unshift() 向数组的开头添加一个或者多个元素,并返回新的长度 var color2 = ['black', 'pink', 'deep blue']; new_length = color2.unshift('hot pink'); console.log(color2); //{['hot pink','black','pink', 'deep blue'] console.log(new_length); // 4 Array.isArray 判断对象是否为数组 var color2 = ['black', 'pink', 'deep blue']; console.log(Array.isArray(color2)); //true length 数组的一个属性,设置或返回数组元素的个数 var color2 = ['black', 'pink', 'deep blue']; console.log(color2.length); //3 2. 字符串对象 charAt() 返回指定索引的字符串 var str = 'hello'; var charset = str.charAt(1); console.log(charset); // e concat() 返回字符串,表示两个或多个字符串的拼接 var str1 = 'al'; var str2 = 'ex'; console.log(str1.concat(str2,str1)); // alexal replace(a,b) 字符串b 替换a var a = '1234567755'; var newStr = a.replace('4567','****'); console.log(newStr); // 123****755 indexOf() 返回某个指定的字符串值在字符串中首次出现的位置,如果没有返回-1 var str = 'world'; console.log(str.indexOf('o')); // 1 console.log(str.indexOf('a')); // -1 slice() 返回start到end -1之间的字符串, 索引从0开始 var str = '正能量'; console.log(str.slice(1,2)); // 能 split() 把字符串分割为字符串数组 var str = '我的天呢,a你在说什么呢?a哈哈哈'; console.log(str.split('a')); // ["我的天呢,", "你在说什么呢?", "哈哈哈"] substr(start,end)字符串截取, 顾头不顾尾 var str = '我的天呢,a是嘛,你在说什么呢?a哈哈哈'; console.log(str.substr(0,4)); // 我的天呢 toLowerCase() 返回一个新的字符串,该字符串字母都变成了小写 var str = 'XIAOMAGE'; console.log(str.toLowerCase()); // xiaomage toUpperCase() 返回一个新的字符串,字符串的所有字母变大写 var str = 'xiaomage'; console.log(str.toUpperCase()); // XIAOMAGE match() 查找到一个或多个正则表达式的匹配 search() 查找与正则表达式相匹配的值 toString() 将number类型转换成字符串类型 var num = 1234.1234; var str = num.toString(); console.log(str); 3. 日期对象 创建日期对象, 只有构造函数这一种方式, 使用new关键字 var myDate = new Date(); 常用语法: Date() 根据当地时间返回 日期和时间 console.log(Date());//Thu Sep 27 2018 10:07:43 GMT+0800 (中国标准时间) getDate() 根据本地时间返回指定日期对象的月份中的第几天(1-31) console.log(myDate.getDate());//27 getMonth() 根据本地时间返回指定日期对应的月份(0-11) #注意 0表示1月 console.log(myDate.getMonth());//8 getFullYear() 根据本地时间返回指定日期对象的年份(返回4位数) console.log(getFullYear());//2018 getDay() 根据本地时间返回指定日期对象的星期几的第几天(0-6) #0代表 星期日 console.log(getDay());//4 getHours() 根据本地时间对象返回指定时间对象的小时(0-23) console.log(myDate.getHours())//14 getMinutes() 根据本地时间对象返回指定时间对象的分钟(0-59) console.log(myDate.getMinutes())//8 getSeconds() 根据本地时间对象返回指定时间对象的秒(0-59) console.log(myDate.getSeconds())//24 toLocalString() 返回本地时间 console.log(myDate.toLocalString()) #使用循环定时器 在页面中显示动态时间 setInterval(function(){ document.getElementById("timer").innerText = Date().toLocalString(); },1000) 4. math(算数)对象 #常用内置对象 Math.floor() 向下取整,地板函数 var x = 1.789; var new_x = Math.floor(x); console.log(new_x)//1 Math.ceil() 向上取整,天花板函数 var x = 1.789; var new_x = Math.ceil(x); console.log(new_x)//2 Math.max() 取多个值中的最大值 console.log(Math.max(3,2,1,4,5,2))//5 Math.min() 取多个数的最小值 console.log(Math.min(3,2,1,4,5,2))//1 Math.random() 获取0-1之间的随机数 console.log(Math.random())//0.669789427291309 #获取100--300之间的随机数 min---max 之间的随机数: min+Max.random()*(max-min) var start = 100; var end = 300; var num = start+Math.random()*(end-start); console.log(Math.floor(num)) 八. 函数 函数的定义:函数就是将一些语句进行封装,然后通过调用的形式,执行这些语句 1. 函数的定义 function 函数名(){ //函数体 } 2. 函数的调用 函数名(); 3. 函数的参数 函数定义时的形参 function f(arg1,arg2){ console.log(arg1+arg2); }; 函数定义时的实参 f(100,200); 4. 返回值 function f(arg1,arg2){ return arg1+arg2; }