JavaScript
JavaScript引入方式
script标签内写代码
<script>在这里写JS代码</script>
引入额外的JS文件
<script src="myscript.js"></script>
JavaScript语言规范
注释
// 单行注释 /* 多行注释 */
JavaScript语言基础
变量声明
- JavaScript的变量名可以使用数字、字母、_、$组成,但是不能以数字开头。
- 声明变量使用
var 变量名;
的格式来声明。
var name="xiaowu"; var age=18;
注意
- 变量名是区分大小写的。
- 推荐使用驼峰式命名规则。
- 保留字(关键字)不能用做变量名。
JavaScript数据类型
JavaScript拥有动态类型
var x; // 此时x是underfined var x=1; // 此时x是数字 var x="xiaowu"; // 此时x是字符串
数值(Number)
JavaScript不区分整型和浮点型,只有一种数字类型。
var a=18; var b=18.18; var c=123e3; // 123000 var d=123e-3 // 0.123
还有一种NaN,表示不是一个数字(Not a Number)。
常用方法:
parseInt("123") // 返回123 parseInt("abc") // 返回NaN,指示某个值不是数字。 parseFloat("123.456") // 返回123.456
字符串(String)
var a="xiao" var b="wu" var c=a+b console.log(c) // 得到小吴
常用方法:
方法 | 说明 |
---|---|
.length | 返回长度 |
.trim() | 移除空白 |
.trimLeft() | 移除左边的空白 |
.trimRight() | 移除右边的空白 |
.charAt(n) | 返回第n个字符 |
.concat(value, ...) | 拼接 |
.indexOf(substring, start) | 子序列位置 |
.substring(from, to) | 根据索引获取子序列 |
.slice(start, end) | 切片 |
.toLowerCase() | 小写 |
.toUpperCase() | 大写 |
.split(delimiter, limit) | 分割 |
拼接字符串一般使用“+”
// slice和subtring的区别 string.slice(start, stop)和string.substring(start, stop): 两者的相同点: 如果start等于end,返回空字符串 如果stop参数省略,则取到字符串末 如果某个参数超过string的长度,这个参数会被替换为string的长度 两者的不同点: substring()的特点: 如果start>stop,start和stop会交换 如果参数是负数或者不是数字,会用0替换 slice()的特点: 如果start>stop,start和stop不会交换 如果start小于0,则切割从字符串末尾往前数的第abs(start)个字符开始(包含该位置的字符) 如果stop小于0,则切割在从字符串末尾往前数的第abs(stop)个字符结束(不包含该位置的字符)
布尔值(Boolean)
区别于python,JavaScript的true和false都是小写。
var a=true; var b=false;
""(空字符串)、0、null、underfined、NaN都是false。
null和underfined的区别:
- null表示值是空,一般在需要指定或清空一个变量时才会使用,如name=null;
- underfined表示当声明一个变量但未初始化时,该变量的默认值是underfined。还有就是函数无明确的返回值时,返回的也是underfined。
null表示变量的值是空(null可以手动清空一个变量的值,使得该变量变为object类型,值为null),underfined则表示只声明了变量,但还没有赋值。
对象(Object)
JavaScript中的所有事物都是对象:字符串、数值、数组、函数...此外,JavaScript还允许自定义对象。
JavaScript提供了多个内建对象,比如String、Date、Array等等。
对象只是带有属性和方法的特殊数据类型。
数组
数组对象的作用是:使用单独的变量名来存储一系列的值。类似于python中的列表。
var a=[123,"asd"]; console.log(a[1]); // 输入"asd"
常用方法:
方法 | 说明 |
---|---|
.length | 数组的大小 |
.push(ele) | 尾部追加元素 |
.pop() | 获取尾部的元素 |
.unshift(ele) | 头部插入元素 |
.shift() | 头部移除元素 |
.slice(start, end) | 切片 |
.reverse() | 反转 |
.join(seq) | 将数组元素连接成字符串 |
.concat(val, ...) | 连接数组 |
.sort() | 排序 |
.forEach() | 将数组的每个元素传递给回调函数 |
.splice() | 删除元素,并向数组添加新元素 |
.map() | 返回一个数组元素调用函数处理后的值的新数组 |
forEach()
语法:
forEach(function(currentValue, index, arr), thisValue)
参数:
参数 | 描述 |
---|---|
function(currentValue, index, arr) | 必需。数组中每个元素需要调用的函数。函数参数:currentValue:必需,当前元素;index:可选,当前元素的索引值;arr:可选,当前元素所属的数组对象。 |
thisValue | 可选。传递给函数的值一般用"this"值。如果这个参数为空,"underfined"会传递个"this"值。 |
splice()
语法:
splice(index, howmany, item1, ..., itemX)
参数:
参数 | 描述 |
---|---|
index | 必需。规定从何处添加/删除元素。该参数是开始插入和(或)删除的数组元素的下标,必须是数字。 |
howmany | 必需。规定应该删除多少元素。必须是数字。但可以是"0"。如果未规定此参数,则删除从index开始到原数组结尾的所有元素。 |
item1, ..., itemX | 可选。要添加到数组的新元素。 |
map()
语法:
map(function(currentValue, index, arr), thisValue)
参数:
参数 | 描述 |
---|---|
function(currentValue, index, arr) | 必须。函数,数组中的每个元素都会执行这个函数。函数参数:currentValue:必须,当前元素的值;index:可选,当前元素的索引值;arr:可选,当前元素属于的数组对象 |
thisValue | 可选,对象作为该执行回调时使用,传递给函数,用作"this"的值。如果省略了thisValue,"this"的值为"underfined" |
运算符
算数运算符
+(加) -(减) *(乘) /(除) %(取余) ++(加加) --(减减) i++和++i的区别:i++是先赋值再自增,++i是先自增再赋值
比较运算符
> >= < <= != == === !== 注意: 1 == "1" //true 弱等于 1 === "1" // false 强等于 // JavaScrip是一门弱类型语言(会自动转换数据类型),所以用两个等号进行比较时,JS内部会自动先将数值类型的1转换成字符串类型的1在进行比较,所以以后写JS涉及到比较尽量用三等号来限制类型,防止判断错误
逻辑运算符
&&(与,相当于python中and) ||(或,相当于python中or) !(非,相当于python中not)
赋值运算符
= += -= *= /=
流程控制
if-else
var x=0; if (x>9){ console.log("1"); }else { console.log("2"); }
if-else if-else
var x=10; if (x>7){ console.log("1"); }else if { console.log("2"); }else { console.log("3"); }
switch
var x=10; switch (a) { case 0; console.log(1); break; case 1; console.log(2); break; default: console.log(3); }
for
for (var i=0;i<10;i++) { console.log(i); }
while
var x=0; while (x<10) { console.log(i); i++; }
三元运算
var a=1; var b=2; var c=a>b?a:b // 三元运算顺序是先写判断条件a>b,再写条件成立返回的值为a,条件不成立返回的值为b // 三元运算可以嵌套使用 var a=10; var b=20; var x=a>b?a:(b=="20")?a:b
函数
函数定义
JavaScript中的函数和Python中的非常类似,只是定义方式有点区别。
// 普通函数定义 function f1() { console.log("Hello World"); } // 带参数的函数 function f2(a, b) { console.log(arguments); // 内置的arguments对象 console.log(arguments.length); console.log(a, b); } // 带返回值的函数 function sum(a, b) { return a+b; } sum(1, 2); // 调用函数 // 匿名函数方式 var sum = function (a, b) { return a+b; } sum(1, 2);
补充:ES6中允许使用箭头(=>)定义函数。
var f=v => v; // 等同于 var f = function(v) { return v; }
函数的全局变量和局部变量
局部变量
在JavaScript函数内部声明的变量(使用var)是局部变量,所以只能在函数内部访问它(该变量的作用域是函数内部)。只要函数运行完毕,本地变量就会被删除。
全局变量
在函数外声明的变量是全局变量,网页上的所有脚本和函数都能访问它。
变量生存周期
JavaScript变量的生命周期从它们被声明的时间开始。
局部变量会在函数运行以后被删除。
全局变量会在页面关闭以后被删除。
作用域
首先在函数内部查找变量,找不到则到外层函数查找,逐步找到最外层。与python的作用域关系一样。
内置对象和方法
Date对象
创建Date对象
// 方法1:不指定参数 var d1 = new Date(); // 方法2:参数为日期字符串 var d2 = new Date("2019/10/14 21:35"); console.log(d2.toLocaleString()); var d3 = new Date("19/10/14 21:38"); console.log(d3.toLocaleString()); // 方法3:参数为毫秒数 var d4 = new Date(5000); console.log(d4.toLocaleString()); console.log(d4.toUTCString()); // 方法4:参数为年月日小时分钟秒毫秒 var d5 = new Date(2019,10,14,21,41,0,5000); console.log(d5.toLocaleString()); // 毫秒并不直接显示
Date对象的方法
var d = new Date(); //getDate() 获取日 //getDay() 获取星期 //getMonth() 获取月(0-11) //getFullYear 获取完整年份 //getYear() 获取年 //getHours() 获取小时 //getMinutes() 获取分钟 //getSeconds() 获取秒 //getMilliseconds() 获取毫秒 //getTime() 返回累计毫秒数(从1970/1/1午夜开始)
JSON对象
var str1='{"name": "xiaowu", "age": 18}' var obj1={"name": "xiaowu", "age": 18} // JSON字符串转换成对象 var obj=JSON.parse(str1); // 对象转换成JSON字符串 var str=JSON.stringify(obj1);
RegExp对象
// 定义正则表达式的两种方式 var reg1 = new RegExp("^[a-zA-Z][a-zA-Z0-9]{5,11}"); var reg2 = /^[a-zA-Z][a-zA-Z0-9]{5,9}$/; /*第一个注意事项,正则表达式不能有空格*/ /*第二个注意事项,全局匹配的时候有一个lastIndex属性*/
来源:https://www.cnblogs.com/yunluo/p/11753034.html