一,运算符
1.比较运算符
== 比较值
1 == “1” true
===比较值与类型
1===“1” false
console.log("========");
console.log(1=='1');
console.log(1==='1');
二,数组
1数组的定义
(1).隐式定义
var 数组名 = [ ];//空数组
var 数组名 = [值1,值2,值3…… ];
var arr1 = [];
console.log(arr1);
var arr2 = [1,2,'a',true];
console.log(arr2);
(2).直接实例化
var 数组名 = new Array(值1,值2,值3……);
var arr3 = new Array(1,2,3);
console.log(arr3);
(3).定义数组并设置长度
var 数组名 = new Array(size);
var arr4 = new Array(5);
console.log(arr4);
2.数组的操作
数组的下标从0开始
获取数组的值:(如果下标不存在,则undefined)
数组名[下标];
设置数组的值:(如果下标不存在,则自动扩容)
数组名[下标]=值;
console.log("=========");
/*数组的操作*/
//获取下标的值
console.log(arr2[1]);//2
//如果下标不存在
console.log(arr2[10]);//undefined
//设置指定下标的值
arr2[1] = 20;
console.log(arr2);
//如果下标不存在
arr2[10] = 100;
console.log(arr2
获取数组长度
数组名.length;
设置数组的长度:
数组名.length=值;
console.log(arr3.length);//3
arr3.length = 5;
console.log(arr3);
3.数组的遍历
1.for循环遍历
for(var index = 0; index<数组长度;index++) {
}
相当于java中:
for(int index = 0; index<数组长度; index++) {
}
2.for……in循环
for(var下标名in数组){
}
3.forEach循环
数组.forEach(function(element,index){
//element:元素
//index:下标
};
console.log("=========");
/*数组的遍历*/
console.log(arr3);
console.log("---for循环遍历---");
//for循环遍历
for(var i = 0; i < arr3.length; i++){
console.log("下标:" + i + ",值:"+ arr3[i]);
}
//for……in
console.log("---for...in----");
for (var i in arr3){
console.log("下标:" + i + ",值:"+arr3[i]);
}
//forEach
console.log("---forEach----");
arr3.forEach(function(element,index){
console.log("下标:" + i + ",值:"+ element);
})
注意:for--》不遍历属性
foreach--》不遍历属性合索引中的undefined
for in--》不遍历索引中的undefined
数组提供的方法:
push:添加元素到最后
indexof:数组元素索引
join:数组转成字符串
split:字符串方法:将字符串转化成数组
/*数组提供的方法*/
var arr5 = ["a","b","c"];
//push
arr5[arr5.length] = "d";
arr5.push("e");
console.log(arr5);
//indexof
console.log(arr5.indexOf("a"));
console.log(arr5.indexOf("t"));
//join
console.log(arr5.join("-"));
//split
var str = "1,2,3,4,5";
console.log(str.split(","));
四,函数
1.函数的定义
(1)函数声明语句
function函数名([参数列表]){
}
(2)函数定义表达式
var 变量名/函数名=function([参数列表] ){
}
(3)Function构造函数
var函数名=new Function([参数列表],函数体);
<script type="text/javascript">
/*函数的定义*/
//1.函数声明语句
function fn01(a,b) {
console.log(a+b);
}
console.log(fn01);
//2.函数定义表达式
var fn02 = function(a,b) {
console.log(a+b);
}
console.log(fn02);
//3.Function构造函数
var fn03 = new Function('a','b','return (a+b);');
console.log(fn03);
//相当于
function fn04(a,b){
return (a+b);
}
2.函数的参数
定义函数时设置形参,调用函数时传递形参
(1)实参可以省略,则形参为undefinded
/*函数的参数*/
//1实参可以省略,则形参为undefinded
function test01(x,y) {
console.log(x+y);
}
//调用函数
//未设置实参
test01();//NaN
test01(1);//NaN
test01(1,2);//3
(2).如果形参名相同,则以最后一个参数为准
function test02(x,x) {
console.log(x);
}
test02(1,2);
(3)可以设置参数的默认值.
function test03(x) {
x = x || "x";
console.log(x);
}
test03(10);
test03();
function test04(x) {
(x != null && x != undefined) ? x = x : "x";
console.log(x);
}
test04();
test04("Hello");
(4)参数为值传递,传递副本;参数值是引用传递,则传递的是地址,操作的是一个对象
test05(num);
console.log(num);
var obj = {name:"zhangsan"};
console.log(obj);
function test06(o) {
o.name = "lisi";
}
test06(obj);
console.log(obj);
五,函数的调用
1.常用调用模式
函数名([参数列表]);
function f1() {
console.log("函数调用模式...");
}
f1();
2.函数调用模式(函数有返回值)
var变量名=函数名([参数列表]);
f1();
var f2 = function(a) {
console.log("函数调用模式...");
return a;
}
var num1 = f2(1);
console.log(num1);
3.方法调用模式
对象 函数名([参数列表]);
var num1 = f2(1);
console.log(num1);
var obj = {
name:"zhangsan",
age:18,
sex:true,
cats:["大毛","二毛"],
dog:{
name:"张二狗",
age:1
},
sayHello:function() {
console.log("你好");
}
}
console.log(obj);
console.log(obj.dog);
console.log(obj.sayHello);
obj.sayHello();
4.函数返回值
return
如果方法没有返回值,使用return,返回的是undefinded
(1)在没有返回值的方法中,用来结束方法
(2)在返回值的方法中,一个是用来结束方法,一个是将值带给调用者
function a1() {
console.log("没有返回值...");
return;
console.log('......');
}
console.log(a1());
function a2() {
console.log("有返回值...");
return "test";
}
console.log(a2());
5.函数作用域
在JS中,只有在函数中才作用域
(1)在函数中,存在局部变量和全局变量
(2)在函数中,如果声明变量时未使用var修饰,则该变量是全局变量
var pp = "Hello";
function qq() {
var box = 10;
box2 = 20;
}
qq();
console.log(pp);
//console.log(box);
console.log(box2);