```html <head> <script> alert(‘Hello World!‘); </script> </head> ```
```html
<script src="main.js"></script>
```
```javascript var age; ```
```javascript var age; age = 18; ```
- NaN:not a number - NaN 与任何值都不相等,包括他本身 - isNaN: is not a number
```javascript console.log(11 + 11); console.log(‘hello‘ + ‘ world‘); console.log(‘100‘ + ‘100‘); console.log(‘11‘ + 11); console.log(‘male:‘ + true); ```
```javascript /* var age = 18; var name = ‘zs‘; console.log(name, age); */
```javascript var num1 = parseInt("12.3abc"); // 返回12,如果第一个字符是数字会解析知道遇到非数字结束 var num2 = parseInt("abc123"); // 返回NaN,如果第一个字符不是数字或者符号就返回NaN ```
```javascript var str = ‘500‘; console.log(+str); // 取正 console.log(-str); // 取负 console.log(str - 0); ```
```javascript var num1 = 5; ++ num1; var num2 = 6; console.log(num1 + ++ num2); ```
```javascript var num1 = 5; num1 ++; var num2 = 6 console.log(num1 + num2 ++); ```
```javascript var a = 1; var b = ++a + ++a; console.log(b); var a = 1; var b = a++ + ++a; console.log(b); var a = 1; var b = a++ + a++; console.log(b); var a = 1; var b = ++a + a++; console.log(b); ```
< > >= <= == != === !== ```javascript ==与===的区别:==只进行值得比较,===类型和值同时相等,则相等 var result = ‘55‘ == 55; // true var result = ‘55‘ === 55; // false 值相等,类型不相等 var result = 55 === 55; // true ```
= += -= *= /= %= ```javascript 例如: var num = 0; num += 5; //相当于 num = num + 5; ```
``` javascript // 练习1: 4 >= 6 || ‘人‘ != ‘阿凡达‘ && !(12 * 2 == 144) && true // 练习2: var num = 10; 5 == num / 2 && (2 + 2 * num).toString() === ‘22‘ ```
```javascript if (/* 条件表达式 */) { // 执行语句 } if (/* 条件表达式 */){ // 成立执行语句 } else { // 否则执行语句 } if (/* 条件1 */){ // 成立执行语句 } else if (/* 条件2 */){ // 成立执行语句 } else if (/* 条件3 */){ // 成立执行语句 } else { // 最后默认执行语句 } ```
```javascript switch (expression) { case 常量1: 语句; break; case 常量2: 语句; break; case 常量3: 语句; break; … case 常量n: 语句; break; default: 语句; break; } ```
```javascript // 结果是什么? var a = !!‘123‘; ```
```javascript var message; // 会自动把message转换成false if (message) { // todo... } ```
```javascript // 当循环条件为true时,执行循环体, // 当循环条件为false时,结束循环。 while (循环条件) { //循环体 } ```
```javascript // 计算1-100之间所有数的和 // 初始化变量 var i = 1; var sum = 0; // 判断条件 while (i <= 100) { // 循环体 sum += i; // 自增 i++; } console.log(sum); ```
```javascript // 初始化变量 var i = 1; var sum = 0; do { sum += i;//循环体 i++;//自增 } while (i <= 100);//循环条件 ```
```javascript // for循环的表达式之间用的是;号分隔的,千万不要写成, for (初始化表达式1; 判断表达式2; 自增表达式3) { // 循环体4 } ```
var start = ‘‘; for (var i = 0; i < 10; i++) { for (var j = 0; j < 10; j++) { start += ‘* ‘; } start += ‘\n‘; } console.log(start); 打印直角三角形 var start = ‘‘; for (var i = 0; i < 10; i++) { for (var j = i; j < 10; j++) { start += ‘* ‘; } start += ‘\n‘; } console.log(start); 打印9*9乘法表 var str = ‘‘; for (var i = 1; i <= 9; i++) { for (var j = i; j <=9; j++) { str += i + ‘ * ‘ + j + ‘ = ‘ + i * j + ‘\t‘; } str += ‘\n‘; } console.log(str); ```
```javascript // 创建一个空数组 var arr1 = []; // 创建一个包含3个数值的数组,多个数组项以逗号隔开 var arr2 = [1, 3, 4]; // 创建一个包含2个字符串的数组 var arr3 = [‘a‘, ‘c‘]; // 可以通过数组的length属性获取数组的长度 console.log(arr3.length); // 可以设置length属性改变数组中元素的个数 arr3.length = 0; ```
```javascript // 格式:数组名[下标] 下标又称索引 // 功能:获取数组对应下标的那个值,如果下标不存在,则返回undefined。 var arr = [‘red‘,, ‘green‘, ‘blue‘]; arr[0]; // red arr[2]; // blue arr[3]; // 这个数组的最大下标为2,因此返回undefined ```
```javascript for(var i = 0; i < arr.length; i++) { // 数组遍历的固定结构 } ```
```javascript // 格式:数组名[下标/索引] = 值; // 如果下标有对应的值,会把原来的值覆盖,如果下标不存在,会给数组新增一个元素。 var arr = ["red", "green", "blue"]; // 把red替换成了yellow arr[0] = "yellow"; // 给数组新增加了一个pink的值 arr[3] = "pink"; ```
```javascript function 函数名(){ // 函数体 } ```
```javascript var fn = function() { // 函数体 } ```
```javascript
函数名();
```
代码示例: ```javascript // 声明函数 function sayHi() { console.log("吃了没?"); } // 调用函数 sayHi(); // 求1-100之间所有数的和 function getSum() { var sum = 0; for (var i = 0; i < 100; i++) { sum += i; } console.log(sum); } // 调用 getSum(); ``` ### 函数的参数 - 为什么要有参数 ```javascript function getSum() { var sum = 0; for (var i = 1; i <= 100; i++) { sum += i; } console.log(); }
```javascript // 函数内部是一个封闭的环境,可以通过参数的方式,把外部的值传递给函数内部 // 带参数的函数声明 function 函数名(形参1, 形参2, 形参...){ // 函数体 } // 带参数的函数调用 函数名(实参1, 实参2, 实参3);
```javascript var x = 5, y = 6; fn(x,y); function fn(a, b) { console.log(a + b); } //x,y实参,有具体的值。函数执行的时候会把x,y复制一份给函数内部的a和b,函数内部的值是复制的新值,无法修改外部的x,y
```javascript //声明一个带返回值的函数 function 函数名(形参1, 形参2, 形参...){ //函数体 return 返回值; }
```javascript function fn() {} console.log(typeof fn); ```
```javascript function fn(b) { var a = 10; return function () { alert(a+b); } } fn(15)(); ```
var arr = [1, 2, 3, 4]; if (a > b) { } for(var i = 0; i < 10; i++) { } function fn() { }
```javascript var num = 123; function foo() { console.log( num ); } foo(); if ( false ) { var num = 123; } console.log( num ); // undefiend
```javascript // 案例1: function f1() { function f2() { } } var num = 456; function f3() { function f4() { } } ```  ```javascript // 案例2 function f1() { var num = 123; function f2() { console.log( num ); } f2(); } var num = 456; f1(); ```
```javascript var a = 25; function abc (){ alert(a);//undefined var a = 10; } abc(); // 如果变量和函数同名的话,函数优先 console.log(a); function a() { console.log(‘aaaaa‘); } var a = 1; console.log(a); ```
```javascript // 1、----------------------------------- var num = 10; fun(); function fun() { console.log(num); var num = 20; } //2、----------------------------------- var a = 18; f1(); function f1() { var b = 9; console.log(a); console.log(b); var a = ‘123‘; } // 3、----------------------------------- f1(); console.log(c); console.log(b); console.log(a); function f1() { var a = b = c = 9; console.log(a); console.log(b); console.log(c); } ```
```javascript var o = { name: ‘zs, age: 18, sex: true, sayHi: function () { console.log(this.name); } };
- 对象字面量 ```javascript var o = { name: ‘zs‘, age: 18, sex: true, sayHi: function () { console.log(this.name); } }; ``` - new Object()创建对象 ```javascript var person = new Object(); person.name = ‘lisi‘; person.age = 35; person.job = ‘actor‘; person.sayHi = function(){ console.log(‘Hello,everyBody‘); } ``` - 工厂函数创建对象 ```javascript function createPerson(name, age, job) { var person = new Object(); person.name = name; person.age = age; person.job = job; person.sayHi = function(){ console.log(‘Hello,everyBody‘); } return person; } var p1 = createPerson(‘张三‘, 22, ‘actor‘); ``` - 自定义构造函数 ```javascript function Person(name,age,job){ this.name = name; this.age = age; this.job = job; this.sayHi = function(){ console.log(‘Hello,everyBody‘); } } var p1 = new Person(‘张三‘, 22, ‘actor‘);
javascript // 下面代码输出的结果 function Person(name,age,salary) { this.name = name; this.age = age; this.salary = salary; } function f1(person) { person.name = "ls"; person = new Person("aa",18,10); } var p = new Person("zs",18,1000); console.log(p.name); f1(p); console.log(p.name);
javascript // 下面代码输出的结果 function Person(name,age,salary) { this.name = name; this.age = age; this.salary = salary; } function f1(person) { person.name = "ls"; person = new Person("aa",18,10); } var p = new Person("zs",18,1000); console.log(p.name); f1(p); console.log(p.name);
```javascript //1. var num1 = 10; var num2 = num1; num1 = 20; console.log(num1); console.log(num2); //2. var num = 50; function f1(num) { num = 60; console.log(num); } f1(num); console.log(num); //3. var num1 = 55; var num2 = 66; function f1(num, num1) { num = 100; num1 = 100; num2 = 100; console.log(num); console.log(num1); console.log(num2); } f1(num1, num2); console.log(num1); console.log(num2); console.log(num); ```
javascript Math.PI // 圆周率 Math.random() // 生成随机数 Math.floor()/Math.ceil() // 向下取整/向上取整 Math.round() // 取整,四舍五入 Math.abs() // 绝对值 Math.max()/Math.min() // 求最大和最小值 Math.sin()/Math.cos() // 正弦/余弦 Math.power()/Math.sqrt() // 求指数次幂/求平方根
~~~javascript // 获取当前时间,UTC世界时间,距1970年1月1日(世界标准时间)起的毫秒数 var now = new Date(); console.log(now.valueOf()); // 获取距1970年1月1日(世界标准时间)起的毫秒数
```javascript var now = new Date(); // valueOf用于获取对象的原始值 console.log(date.valueOf()) // HTML5中提供的方法,有兼容性问题 var now = Date.now(); // 不支持HTML5的浏览器,可以用下面这种方式 var now = + new Date(); // 调用 Date对象的valueOf() ```
- 写一个函数,格式化日期对象,返回yyyy-MM-dd HH:mm:ss的形式 ```javascript function formatDate(d) { //如果date不是日期对象,返回 if (!date instanceof Date) { return; } var year = d.getFullYear(), month = d.getMonth() + 1, date = d.getDate(), hour = d.getHours(), minute = d.getMinutes(), second = d.getSeconds(); month = month < 10 ? ‘0‘ + month : month; date = date < 10 ? ‘0‘ + date : date; hour = hour < 10 ? ‘0‘ + hour : hour; minute = minute < 10 ? ‘0‘ + minute:minute; second = second < 10 ? ‘0‘ + second:second; return year + ‘-‘ + month + ‘-‘ + date + ‘ ‘ + hour + ‘:‘ + minute + ‘:‘ + second; } ```
```javascript function getInterval(start, end) { var day, hour, minute, second, interval; interval = end - start; interval /= 1000; day = Math.round(interval / 60 /60 / 24); hour = Math.round(interval / 60 /60 % 24); minute = Math.round(interval / 60 % 60); second = Math.round(interval % 60); return { day: day, hour: hour, minute: minute, second: second } } ```
```javascript // 方式1 推荐 arr = []; // 方式2 arr.length = 0; // 方式3 arr.splice(0, arr.length); ``` #### 案例 - 将一个字符串数组输出为|分割的形式,比如“刘备|张飞|关羽”。使用两种方式实现 ```javascript function myJoin(array, seperator) { seperator = seperator || ‘,‘; array = array || []; if (array.length == 0){ return ‘‘; } var str = array[0]; for (var i = 1; i < array.length; i++) { str += seperator + array[i]; } return str; } var array = [6, 3, 5, 6, 7, 8, 0]; console.log(myJoin(array, ‘-‘)); console.log(array.join(‘-‘)) ``` - 将一个字符串数组的元素的顺序进行反转。["a", "b", "c", "d"] -> [ "d","c","b","a"]。使用两种种方式实现。提示:第i个和第length-i-1个进行交换 ```javascript function myReverse(arr) { if (!arr || arr.length == 0) { return []; } for (var i = 0; i < arr.length / 2; i++) { var tmp = arr[i]; arr[i] = arr[this.length - i - 1]; arr[arr.length - i - 1] = tmp; } return arr; } var array = [‘a‘, ‘b‘, ‘c‘]; console.log(myReverse(array)); console.log(array.reverse()); ``` - 工资的数组[1500, 1200, 2000, 2100, 1800],把工资超过2000的删除 ```javascript // 方式1 var array = [1500,1200,2000,2100,1800]; var tmpArray = []; for (var i = 0; i < array.length; i++) { if(array[i] < 2000) { tmpArray.push(array[i]); } } console.log(tmpArray); // 方式2 var array = [1500, 1200, 2000, 2100, 1800]; array = array.filter(function (item, index) { if (item < 2000) { return true; } return false; }); console.log(array); ``` - ["c", "a", "z", "a", "x", "a"]找到数组中每一个a出现的位置 ```javascript var array = [‘c‘, ‘a‘, ‘z‘, ‘a‘, ‘x‘, ‘a‘]; do { var index = array.indexOf(‘a‘,index + 1); if (index != -1){ console.log(index); } } while (index > 0); ``` - 编写一个方法去掉一个数组的重复元素 ```javascript var array = [‘c‘, ‘a‘, ‘z‘, ‘a‘, ‘x‘, ‘a‘]; function clear() { var o = {}; for (var i = 0; i < array.length; i++) { var item = array[i]; if (o[item]) { o[item]++; }else{ o[item] = 1; } } var tmpArray = []; for(var key in o) { if (o[key] == 1) { tmpArray.push(key); }else{ if(tmpArray.indexOf(key) == -1){ tmpArray.push(key); } } } returm tmpArray; } console.log(clear(array));
```javascript // s1是基本类型,基本类型是没有方法的 var s1 = ‘zhangsan‘; // 当调用s1.substring(5)的时候,先把s1包装成String类型的临时对象,再调用substring方法,最后销毁临时对象, 相当于: var s1 = new String(‘zhangsan‘); var s2 = s1.substring(5); s1 = null; ```
```javascript // 创建基本包装类型的对象 var num = 18; //数值,基本类型 var num = Number(‘18‘); //类型转换 var num = new Number(18); //基本包装类型,对象 // Number和Boolean基本包装类型基本不用,使用的话可能会引起歧义。例如: var b1 = new Boolean(false); var b2 = b1 && true; // 结果是什么 ```
```javascript var str = ‘abc‘; str = ‘hello‘;
```javascript var str = new String(‘Hello World‘); // 获取字符串中字符的个数 console.log(str.length);
```javascript // 1 字符方法 charAt() //获取指定位置处字符 charCodeAt() //获取指定位置处字符的ASCII码 str[0] //HTML5,IE8+支持 和charAt()等效 // 2 字符串操作方法 concat() //拼接字符串,等效于+,+更常用 slice() //从start位置开始,截取到end位置,end取不到 substring() //从start位置开始,截取到end位置,end取不到 substr() //从start位置开始,截取length个字符 // 3 位置方法 indexOf() //返回指定内容在元字符串中的位置 lastIndexOf() //从后往前找,只找第一个匹配的 // 4 去除空白 trim() //只能去除字符串前后的空白 // 5 大小写转换方法 to(Locale)UpperCase() //转换大写 to(Locale)LowerCase() //转换小写 // 6 其它 search() replace() split() fromCharCode() // String.fromCharCode(101, 102, 103); //把ASCII码转换成字符串 ``` #### 案例 - 截取字符串"我爱中华人民共和国",中的"中华" ```javascript var s = "我爱中华人民共和国"; s = s.substr(2,2); console.log(s); ``` - "abcoefoxyozzopp"查找字符串中所有o出现的位置 ```javascript var s = ‘abcoefoxyozzopp‘; var array = []; do { var index = s.indexOf(‘o‘, index + 1); if (index != -1) { array.push(index); } } while (index > -1); console.log(array); ``` - 把字符串中所有的o替换成! ```javascript var s = ‘abcoefoxyozzopp‘; do { s = s.replace(‘o‘, ‘‘); } while (s.indexOf(‘o‘) > -1); console.log(s); console.log(s.replace(/o/ig, ‘‘)); ```
- 判断一个字符串中出现次数最多的字符,统计这个次数 javascript var s = ‘abcoefoxyozzopp‘; var o = {}; for (var i = 0; i < s.length; i++) { var item = s.charAt(i); if (o[item]) { o[item] ++; }else{ o[item] = 1; } } var max = 0; var char ; for(var key in o) { if (max < o[key]) { max = o[key]; char = key; } } console.log(max); console.log(char);
原文:https://www.cnblogs.com/xuanjidd/p/9154715.html