JavaScript概述
JavaScript的主要用途是用在浏览器当中, 也可以作为后台开发语言(nodejs),类似于 java, 简称 js ,它的恩日日是写在<script>标签之间的。
格式:
<script type="text/javascript"> //内容\ /*内容*/ </script>
注释
- //注释内容
- /*注释内容*/
基本数据类型
- Number 数字类型(整数,小数) 如:1.0 、1 、-2
- String 字符串类型 如:"字符串1" 、'字符串2'
- Boolean 布尔类型 如: true、 false
- Null 表示空值
- Undefined 未定义 (声明了var变量,但没有赋初值时)
变量赋值
与java不同JavaScript声明变量所有的那些数据类型都是var,只要用var来声明变量就好了,也可以说它是弱类型语言。
- 所有变量类型 都是 var (var 可以存储数字,字符串,布尔 ...)
如:var a=1;声明了一个变量a并给它赋值数字1
var str = "hello, world";声明了一个变量str并给它赋值字符串 "hello, world"
调试输出
- 可以利用浏览器提供的 `console` 对象进行调试输出
console.log("内容");
基本运算
- 没有除0异常,除零会出现正负无穷大(Infinity)
- 如果进行了非法的数字运算,结果是 NaN (Not a Number)
如:"aaa" - 9 结果就是 NaN
包括字符串转换数字失败时,结果也是NaN 例如 parseInt("aaa")
- js中的== 比较的是值(不同类型的会转换后比较)
如: 1 == '1' 结果是 true
如果既要保证值相等,也要保证类型相等
1 === '1' 结果是false
- 可以在条件判断中,使用各种类型的值
对于数字类型 0 代表 false, 非零 代表 true
对于字符串 "" 代表 false, 非空串 代表 true
null , undefined 代表 false如:var i = 0;
if(i) {
console.log("ok");
} else {
console.log("not ok");
}输出结果为:not ok
js中没有块作用域
for(var i = 0; i < 10; i++) {
console.log(i);
}
//for循环中的i在java中是不能在循环之外的地方使用,而JavaScript中可以,这里将会输出10
console.log(i);
//局部的变量,在java中是不能在局部以外使用的,而JavaScript没有这一局限,因此可以输出x,值为10
if(true) {
var x = 10;
}
console.log(x);
复杂类型
Object 对象类型
- 定义对象
var 对象名={属性名:属性值, 属性名:属性值 ...}
如:var obj = {"name":"张三", "age": 18};
- 动态添加
对象名.新属性="内容";
如:obj.sex = "男";
- 修改属性
对象名.原有属性="内容";
如:obj.age = 20;
- 删除属性
delete 对象名.原有属性;
如:delete obj.age;
Array 数组类型
- 定义数组
var 数组名=[值1, 值2, ... 值n];
var 数组名=new Array();
var 数组名=new Array(数组大小);
如:var array = [1,2,3,4,5];
- 向尾部添加元素
数组名.push(元素) 结果[1,2,3,4,5,6]
如:arr.push(6); 结果[1,2,3,4,5]
- 从尾部删除元素
数组名.pop() 结果[1,2,3,4]
如:arr.pop();
- 从中间的某个下标删除元素
数组名.splice(下标,个数);
如:arr.splice(0,2); 结果[3,4,5]
- 指定位置插入元素
数组名.splice(指定位置,0,插入的数据);
如:arr.splice(0,0,"z"); 结果[z,1,2,3,4,5]
- 拼接数组内的所有元素
数组名.join("拼接符号");
如:arr.join("-"); 结果1-2-3-4-5
- 排序
数组名.sort(); //无参数的sort方法把数组内的数字当做字符串排序,因为字符串的比较是先比较第一个字符,然后再比较第二个字符
数组名.sort(有参);
如:array.sort( function comparator(a,b) {
// 返回的整数 0 表示 a= b 如果返回负数 a < b 如果返回正数表示 a > b
if( a > b) {
return 1;
} else if (a < b ) {
return -1;
} else {
return 0;
}
//也就是 return a - b;
});
数组遍历
如:var array = [1,2,3,4,5];
forEach遍历数组
- 其中函数的参数 i 是数组内第i个元素
array.forEach( function aaa(i) {
console.log(i);
} );
- 匿名函数
array.forEach( function (i) {
console.log(i);
} );
- 箭头函数,这个有点像java中的lambda表达式,只不过Java中的是“-”而不是“=”
array.forEach( (i)=>{
console.log(i);
} );for循环遍历
for(var i=0;i<arr.length;i++){
console.log(i);
}
Funtion 函数类型
格式:
function 函数名(参数列表) {
函数体
return 返回结果
}如:
function add(a, b) {
console.log(arguments);
return a + b;
}注:函数的参数是可变的, 形参和实参的个数可以不一致
例如,调用add(4,5) ==> 9
调用add(4,5,6) ==> 9 // 相当于第三个实参没用上
调用add(4) ==> NaN // b 参数没有赋值,是 undefined 结果是NaN
获取到所有实际参数: arguments
- 局部变量与全局互不冲突
var a = 10; // 全局的变量 a
function test() {
var a = 5; // 局部的变量 a ,与全局的a互不冲突
console.log(a);
}结果:5
注:函数内定义的 var 变量才是局部变量, 函数外声明的var 都是全局变量
Date 日期类型
- 定义日期对象
var date = new Date();
- 获得年份
date.getFullYear();
- 获得月份
date.getMonth();
- 获得日期
date.getDate();
- 获得小时
date.getHours();
- 获得分钟
date.getMinute();
- 获得秒
date.getTime();
正则类型
格式:
var 正则名 = /^正则表达式$/;
正则名.test("匹配的内容");
具体的表达式的规则都是一样的,可到我之前写正则表达式的内容中查看。
字符串
- 连接字符串
字符串1.concat(字符串2);
- 搜索某个字符串位置,如果相同的字符串,则返回第一个找到的字符串的位置
字符串名或字符串.indexOf(字符);
- 找子串
字符串名或字符串.substr(起始位置,个数);
字符串名或字符串.substr(起始位置,结束位置);
如:var str = "abcde";
str.substr(2,2); // 参数1是起始下标,参数2是长度 ,返回cdstr.substring(2, 4) // 参数1是起始下标, 参数2是结束下标但不包括它,返回cd
- 替换字符串
字符串名或字符串str.replace(旧字符串, 新字符串);
如:1、var str = "aaabbbaaa";
str.replace("a", "c"); // 只替换了第一个匹配的a,结果caabbbaaa
str.replace( /a/g, "c" ); // global(全局的) 替换所有满足的,结果:cccbbbccc
2、 var str = "aaabbbaaa";
str.replace(/aaa/g, "c");// aaa-->c cbbbc3、 var str = "<p>aaaaa</p>"; // 把标签去掉, 只留内容
str.replace(/<p>/, "").replace(/<\/p>/,""); // 替换了两次
或str.replace(/(<p>|<\/p>)/g, "");//全局匹配<p>或</p>标签,找到就把它变为""4、分组替换$1 表示第一个分组、$2 表示第二个分组...
str.replace(/(<p>)(.+)(<\/p>)/g, "$1");//第一个括号表示$1,第二个表示$2,以此类推
总结
js的语法不多但是用的时候可能会忘记一些内容,因此要多练多看,我总是会把注释弄错,js的注释是//注释内容或/*注释内容*/,不要弄错了。