JavaScript数据类型
JavaScript拥有动态类型,这意味着相同的变量可用作不同的类型
var x;
var x = 5;
var x = "John";
JavaScript对象
对象由花括号分隔。在括号内部,对象的属性以名称和值的形式(name: value)来定义。属性由逗号分隔;
var person = {firstname: "John", lastname:"Doe", id:5566};
Undefined和Null
JavaScript类型转换
JavaScript5种不同数据类型:
. String
. number
. boolean
. object
. function
3种对象类型
. Object
. Date
. Array
2个不包含任何值得数据类型
Null undefined
- NaN的数据类型是number 数组的数据类型是object,日期的数据类型是object null的数据类型也是object, 未定义的变量数据类型是undefined。
constructor属性
不能使用typeof判断数组和日期的数据类型,但是constructor可以
- 跳过了正则表达式
变量提升
函数声明和变量声明总是会被解释器悄悄地“提升”到方法体的最顶部。
- JavaScript只有声明的变量会提升,初始化的不会。
程序作用域
在每个代码块中JavaScript不会创建一个新的作用域,一般各个代码块的作用域都是全局的
this的多种指向
- 在对象方法中,this指向调用它所在方法的对象
- 单独使用this时,它指向全局对象
- 函数使用中,this指向函数的所有者
- 严格模式下函数没有绑定到this上,这时this时undefined
- HTML事件句柄中,this指向了接收事件的HTML元素
- apply和call允许切换函数执行的上下文环境,即this绑定的对象,可以将this引用到任何对象。
let和const
ES6新增的两个重要关键字,let声明的变量只有在let命令所在的代码块内有效;const声明一个只读的常量,一旦声明,常量的值就不能改变。
在ES6之前,JavaScript只有两种作用域:全局变量和函数内的局部变量。
- 使用var关键字声明的变量不具备块级作用域的特性,他在{}外依然能被访问。let关键字来实现块级作用域
对比以下代码
var i = 5;
for(var i = 0; i < 10; i++){
// to do
}
//这里输出i为10
let i = 5;
for(let i = 0; i < 10; i++) {
// to do
}
// 这里输出i为5
在JavaScript中,函数是对象,对象就有他的属性和方法。arguments apply() call()
- 自调用函数
JavaScript闭包(内嵌函数)
此技巧是js为其没有访问修饰符而创建的“私有属性”
JavaScript对象
JavaScript中所有事物都是对象:字符串,数值,数组,函数...,对象只是带有属性和方法的特殊数据类型
创建JavaScript对象(实例)
JavaScript是面向对象语言,单JavaScript不使用类
JavaScript Number对象
JavaScript只有一种数字类型
NaN
创建一个数组
1:常规方式:
var myCars = new Array();
myCars[0] = "saab";
myCars[1] = "Volvo";
myCars[2] = "BMW";
2:简洁方式:
var myCars = new Array("Saab","Volvo","BMW");
3:字面:
var myCars = ["Saab", "Volvo", "BMW"];
- 在一个数组中可以有不同的对象
JS浏览器BOM
window方法:
open() close() moveTo() resizeTo() availHeight() availWidth()
window.loacation.assign location.hostname location.pathname location.path location.protocol
window.history.back() window.history.forward()
Window Navigator
JavaScript弹窗 警告框 window.alert() 确认框 window.confirm() 提示框:window.prompt()
JavaScript计时时间 setInterval() setTimeout() clearInterval() clearTimeout()
JavaScript框架(库)
jQuery(最重要) Prototype MooTools
网友评论