一、JavaScript变量:
- 声明变量:
var 变量名;
- 给变量赋值:
变量名 = 值;
JS是一种弱类型语言,没有编译阶段,一个变量可以任意赋值,赋什么类型值都可以。
当JS中某个变量没有手动赋值的时候,系统默认值undefined。
var存在变量提升,即在运行时首先初始化var变量(全局变量在浏览器运行就初始化,局部变量在函数执行时初始化),但不赋值。再执行其他代码。
二、全局变量和局部变量:
- 全局变量:
在函数体之外声明的变量属于全局变量,浏览器打开时创建,浏览器关闭时销毁,会占用浏览器大量内存,建议少用。 - 局部变量:
函数体中声明的变量,函数执行时创建,函数执行结束销毁。
注意:当一个变量声明的时候没有用var,该变量的就是一个全局变量。
三、数据类型:
- 虽然JS中的变量声明的时候季后不需要指定数据类型,但是在赋值的时候,每一个数据还是有类型的。
- 数据类型有:
- 基本类型:Undefined、Number、String、Boolean、Null
- 引用类型 :Object及其子类
四、Undefined类型:
- 只要变量没赋值就是undefined类型,也可以给变量手动赋值undefined。
五、Number类型:
- 关于NaN:表示not a number,不是一个数字,但属于Number类型。例如100/'abc’结果是NaN。
- 注意100+'abc’结果是100abc,+号两边如果有字符串,会执行字符串拼接,所以结果不是NaN。
- Infinity: 表示结果为无穷大,10/0结果为Infinity。
- isNaN()函数: true表示不是一个数字,false表示是一个数字。
- parseInt()函数: 将字符串转数字,取整数位。
- parseFloat()函数: 将字符串转换为数字。
- ceil()函数: 向上取整。
六、Boolean类型:
- 只能是true/false。
- Boolean()函数: 将非布尔类型转布尔类型,有就转换成true,没有就转false。
七、String类型:
- 可以用使用单引号’ ',也可以使用" "双引号。
- **length函数:**获取字符串长度。
- indexOf()函数: 获取子字串第一次出现位置的索引,返回负数表示不包含该子串。
- replace()函数: 字符串替换,只替换一次,替换第一个。
- split()函数: 拆分字符串。
- toLowerCase()函数: 转小写。
- toUpperCase()函数: 转大写。
- substring (1,2)函数: 返回从下标1开始到下标2位置的字符串,不包含2.
- substr (1,2)函数: 返回从下标1开始往后截取共2个字符的字符串。
八、Object类型:
- 所有类型的父类,自定义类型默认继承Object。
- 常用属性:prototype 给类动态扩展属性和函数。
- 定义类:
- 第一种方式:
function 类名(形参){可以创建属性、方法}
- 第二种方式:
类名 = function(形参){可以创建属性、方法}
- 其实就是创建函数,如果用new 的方式调用函数就是创建对象。
- 第一种方式:
- 创建对象:
new 类名();
- 访问对象的属性:
- 第一种方式:
对象名.属性名;
- 第二种方式:
对象名["属性名"];
- 第一种方式:
function User(a,b,c){
this.sno = a;//创建属性
this.sname = b;
this.sage = c;
this.getName = function(){//创建方法
return this.sname;
}
}
var u1 = new User(111,"zhangsan",55);
alert(u1.sno);//111
alert(u1["sno"]);//111
u1.getName();//zhangsan
- **prototype属性:**可以给类动态扩展属性和函数。用法:
User.prototype.getAge = function(){
return this.age;
}
注意:通过这种方式可以给html中任何一种数据类型动态扩展属性和函数;