数据类型
Number类型:整数、小数、NaN(赋值|计算无法获得正确的结果)
String类型:定义在一对引号中,‘ ’|“ ”都可以
Boolean类型:true|false
Null 空类型:赋值|未得到值
Undefined未定义:(赋值|只声明不赋值存在默认值)
Object类型:键值对,用逗号分隔,最后一个不需要添加逗号,key和value都是字符串,key属性满足标识符命名规范可以省略‘ ’|“ ‘
typeof
typeof 数据|typeof(数据)返回数据类型
类型转换
显示类型转换:
通过其他方式|函数,手动让函数改变其类型
js中对象类型不参与数据转换,其他任意类型都可以转换成一下三种类型:
String(数据)|Number(数据)|Boolean(数据)
隐式类型转换:
目的不是为了改变数据类型,但是执行过程中会隐式改变类型。
逻辑运算符 &&和||
java中逻辑运算符两边操作数必须为boolean类型
js中逻辑运算符两边的操作数可以都是boolean,也可以有其他类型的数据参与,如果有,结果肯定为其中一个
&& 一个为false就是false
第一个操作数转为boolean,为false,结果就为第一个操作数的值
为true,结果就为第二个操作数的值
||一个为true就是true
第一个操作数转为boolean,为true,结果就为第一个操作数的值
为false,结果就为第二个操作数的值
块{}
java中{ }自成作用域
js中块{ }不是作用域,作用域只看function
数组
var arr1 = new Array(1,"wo",null,undefined,true);//创建的同时赋值
var arr2 = new Array();//构建一个空数组
var arr3 = [20,"你",null];//字面量的创建方式
arr1[0] = 1;
arr1["hah"] = 20;
console.log(arr1['hah']);//20
console.log(arr1);//1,"wo",null,undefined,true
三种遍历:
for循环
for(var i=0;i < arr.length;i++){
console.log(arr[i]);
}
for in
for(i in arr){
console.log(arr[i]);
}
foreach
var3.forEach(function(value,index,array){
console.log(value);//值
console.log(index);//索引
console.log(array);//数组
})
this关键字
运行期间动态绑定对象
1)this所在的函数是否是通过new调用的,如果是,指向当前new的对象
2)this通过对象.函数名()使用,this指代当前调用的对象
3)this默认指代window对象,window 指全局对象
定义的全局变量,默认定义window对象的属性
定义全局函数,为window的功能
var a =5;
console.log(a);
console.log(this.a);
console.log(window.a);
var obj={
a:12
fn:function(b.c){
console.log(this.a,b,c);
}
obj.fn();//12,undefined,undefined
var v = obj.fn;
v();//5,undefined,undefined
}
function Person(name,age){
this.age= age;
this.name = name;
}
var p1 = new Person("zhangsan",18);
var p2 = new Person("lisi",17);
console.log(p1);
console.log(p2);
var obj2={
a:24
}
修改this指向:
call(新的对象,实参列表)
obj.fn.call(obj2,1,2);//24,1,2
apply(新的对象,参数)
obj.fn.apply(obj2,[7,8]);//24,7,8
()->才是调用
console.log(obj.fn);//不是直接调f(b.c){
//console.log(this.a,b,c);
//}
arguments内置对象
指代当前对象传递的实际参数
function func(){
console.log(arguments.length);
}
func(1,2,3,4,5);//5
function f1(){
console.log("我是函数f1");
return function f2(){
console.log("我是函数f2");
}
}
console.log(f1());//我是函数f1+f2方法体
f1()();//我是函数f1+我是函数f2
console.log(f1()());//我是函数f1+我是函数f2+f2的返回值
需求:在外部想使用函数内部的资源|数据时,可以选择使用闭包
常用类
String
Math
Date
//获取时间日期
getFullYear()年,getmonth()月,getDate()日,getDay()周,getHours()时,getMinutes()分,getSeconds()秒
js中的对象
{ }代表对象
键值对形式的内容
键值对之间使用 ,进行间隔
key:value
key和value内容都是字符串
如果key符合标识符的命名规范.‘ ’可以省略
value可以为任意类型的数据
创建对象:
1.字面量的创建方式{ }
使用对象的内容:
1.对象.属性
2.对象[’属性‘]—万能的
事件
通过某些行为触发js代码的执行,这个行为称为事件
分类事件:
鼠标事件
键盘事件
焦点事件
文档事件
表单事件