alert 控制浏览器输出一个警告框
document.write()可以向body输出一个内容
console.log( )箱控制台输出内容
js代码可以写在标签中,但是不推荐,不方便维护,不推荐使用
可以将js代码写在标签onclick中,或者标签a中
双引号中嵌套的需要写单引号
JS也会有外部js代码文件 用.js 结尾 通过script标签引入,可以在不同页面重复,也可以利用到浏览器的缓存机制,推荐使用 scripts一旦用于引入外部scripts文件,内部写的就会失效,除非在写一条scripts标签用于编写内部js代码,从上到下执行
/* 多行注释
*/
//。。。单行注释
var关键字声明变量 可以通过自变量对变量进行声明
var a=123;
console.log(a); ------- 123
标识符不能以数字开头 不能用ES的关键字或者保留字
标识符一般都用驼峰命名法:开头字母小写,单词开头字母大写,其余小写(也可用中文,但是不建议)
string:字符串 基本数据类型
number:数值 基本数据类型
Boolean:布尔值 基本数据类型
null:空值 基本数据类型
undefined:未定义 基本数据类型
object:对象 引用数据类型
var str = “hello”; 字符串
前面可以加转义字符 \ \n表示换行 \t制表符
number.max_value js中的最大值
infinity :正无穷
typeof +变量
console.log(typeof a); 检查类型
用typeof检查infinity也会返回number
js进行浮点数的运算可能得到不精确的数字 千万不要使用js进行对精确度较高的运算
NaN :not a number 类型也是 number
布尔值只有两个值 truezhen false假 主要做逻辑判断
Null类型的只有一个值: null 专门用来表示为空的对象 typeof检测返回值为object
未赋值的变量检测为undefined(未定义)
强制类型转换
主要转换成 string number Boolean
方式一:调用被转换数据类型的tostring()方法,不会影响到原变量 但是null和undefined两个值没有.tostring方法会报错
var a =123;
var b= a.tostring()
b 为字符串类型(也可以再写a)
方法二:调用String()函数,将被转换的数据作为参数传递给函数 转换谁就写在括号里 可以转换null和undefined,对于number和Boolean实际上就是调用tostring()方法
a = 123;
a=String(a);
转换为number
转换方式一:使用number()函数
a = “123”
a=number(a)
如果字符串有非法数字(undefined)就会变成NaN 如果是一串空格 会变成0 布尔值转数字 true-1 false-0 null-0
转换方式二:
parseInt ()把字符串转换为一个整数
parseFloat()把一个字符串转换为一个浮点数
parseInt ()可以将有效的整数提取出来转化为number 有中断的则中断 parseFloat()可以获得有效的小数,有中断也会中断
a=123px
a=parseint(a)-----123
如果对非string会先转换成string再转换成number
表示16进制数字,要用0x开头 例如: a=0x123;
表示8进制数字,要用0开头
表示2进制数字,需要以0b开头,但是不是所有浏览器都支持 将字符串转换为数字,例如”070”有的浏览器会当成十进制解析,有的浏览器会当成八进制解析 可以在转换时加入第二个参数,指定数字的进制 :
a=parseInt(a,10); 当成十进制解析
转换为Boolean
使用Boolean函数:a=Boolean(a)
数字转Boolean 除了0和NaN是false,其余都是true
字符串转Boolean,除了空串,其余都是true
null和undefined都会转换为false
对象也会转换为true
运算符
+:任何数和NaN运算都得NaN,字符串相加会拼成一个字符串 拼串: 任何值和字符串做加法运算都会想转换为字符串,再进行拼串。
var c = 123;
c=c+”” 可以利用这一特点,将一个任意的数据类型转换为字符串
—:除了加法,其余都会转换为number
*:
/:
可以对一个数据类型使用+号,将其转换为number
a=”18”;
a=+a;
自增和自减 ++ -- 可以后++和前++ 都会使原变量+1 不同的是a++和++a 的值不同 a++是自增前的值,++a是自增后的值
var a=1;
a++; (或者++a;)
自减同上。
JavaScript逻辑运算符:
! 非 &&与 ||或
如果对非布尔值进行,会先转换为布尔值在进行取反,可以用此特性转换一个其他的数据类型为布尔值(做两次非运算!!)
与:有一个false返回值就是false
或:两个值只要有一个true就返回true 两个false才返回false
&& 非布尔值的情况:对于非布尔值,会将其转换为布尔值在运算并且返回原值 ,如果第一个值为true,一定返回第二个,第一个值为false,直接返回第一个值
关系运算符 :
关系成立返回true 不成立返回false
对于非数值比较,先转换成数字在比较 任何和null比较都是false,如果两侧都是字符串,会比较字符的编码,一位一位进行比较,两位一样就比下一个,可进行英文排序,比较中文没有意义
== 当使用==比较两个值的时候类型不同,自动类型转换,大部分情况转换为
if语句:
if(条件&&条件2){
执行语句;
}
if(){
。。。。。。
}elseif(){
。。。。。。 只会有一个代码块被执行
}else{
。。。。。。。
}
prompt 弹出一个提示窗,可输入,,作为返回值
返回值为String类型的
Switch语句: switch(条件表达式){
Case 表达式:
语句
Break;
Case 表达式:
语句
Break;
Default:
语句
Break;
}
Switch 里的条件表达式会和case后的表达式的值进行比较
break用来退出switch语句和循环语句;所有执行都为false 则执行default
while循环:
三个步骤:1初始化变量 2设置一个条件表达式 3更新表达式,每次更新初始化变量
Do…….while 先斩后奏,先执行再判断
For 循环:
For(初始化表达式;条件表达式;更新表达式){
语句。。。。。。
}
break语句会立即终止和他最近的循环语句,
可以为循环创建一个标签(label)break后加 label将会结束指定的循环
Continue可以用来跳过当次循环。只能用于循环
Console.time() 可以开启一个计时器,需要一个字符串作为计时器的标识 console.timeEnd(); 用来停止计时器,
对象:
Object:引用数据类型
对象的分类:1、内建对象
2.宿主对象 B OM(浏览器对象模型) DOM(文档对象模型)
3.自建对象 开发人员自己创建的对象
Var obj = new object();-----构造函数:专门用来创建对象的函数
向对象中添加属性: 对象.属性名 = 属性值;
删除对象属性: delete 对象.属性名
对象的属性名不强制要求遵守标识符的规范,什么名字都可以,但是尽量按着规范使用,如果使用特殊的属性名,不能用”.”的方式操作,用另一种方式:
对象[“属性名”] = 属性值
(obj[“123”]);取的时候也要这么取:
运算符的优先级:
使用对象字面量创建对象 var obj = {属性名:属性值,属性名:属性值}
函数:function 函数名([形参1,形参2,。。。。。形参N]){
语句….
}
Function fun2 (){
Console.log(““aaaaaaa”)
} 调用办法:fun2();
函数表达式创建函数:
Var 函数名 = function([形参1,形参2,。。。。。形参N]){
语句….
}
调用办法-------- 函数名();
形参:
实参可以是对象,也可以是一个函数。
Break跳出当次循环 continue用于跳过当次循环 return 退出整个函数返回值可以是任意的数据类型
立即执行函数: (外围加一个括号)执行直接后面括号里写
对象的属性值也可以是函数;如果一个函数作为一个对象的属性保存,我们称这个函数是这个对象的方法,调用这个函数就说调用对象的方法(只是叫法不同…)
枚举对象中的属性for in 。。。 。。 就能看到所有属性 就能见到所有属性值
作用域:Scope:
全局作用域无法访问函数作用域的变量,在函数作用域中操作一个变量时,他会先在自身作用域中寻找,有,就直接使用。没有则向上一级作用域中寻找直到找到全局作用域,再没有找到则会报错,在函数作用域中要访问全局作用域可以用Window属性
函数作用域也会声明提前,提前声明但是不赋值
函数作用域中不使用var声明的变量都会成为全局变量
this: 浏览器会向函数内部穿第一个隐含的参数:this
指向的对象 根据函数的调用方式不同,this对应不同的对象 以函数形式调用 this永远是Window 以方式调用就是对应的对象
工厂方法创建对象:
function create… (){
var obj = new Object();
obj.name = name;
…
return obj;
}
构造函数:就是一个普通的函数,创建方式和函数没有区别,不同的是构造函数习惯首字母大写
function Person(){
}
var per = new Preson()//函数直接调用,构造函数需要用new关键字
构造函数执行流程:1,立刻创建新的对象
2.将新建的对象作为函数中得this
3.逐行执行代码
4.将新建的对象作为返回值返回