js组成
- ECMAScript:规定了基本语法
- Dom:文档对象模型(对元素进行操作),是标准编程接口
- Bom:提供独立于内容与浏览器窗口进行互动的对象结构(eg:弹出框,控制浏览器跳转)
js书写位置
- 内嵌的js:
<head><script>写在这中间的</script></head>
- 行内式的js:(eg:
<input type="button" value="唐伯虎" oncilck="alert(点秋香)"
) - 外部js文档:在html中写引入文档
<srcipt src="my.js></srcript>
js的注释
单行:"//“和"ctrl+/”
多行:shift+alt+a
js的输入输出语句
- Promt(’ ')输入框
- alert(’ ') 输出框
- console.log(’ ')浏览器控制台可见
变量
使用步骤:声明-赋值-输出、使用
语法拓展:
- 更新变量(赋值新的类型或者值)
- 多个变量同时声明
- 只声明不赋值结果为undefined
- 不声明只赋值,会变成全局变量
数据类型
特点:js的数据类型在赋值以后才确定;变量的数据类型是可变的。
数据类型:数字型number(浮点,整数)、字符串string、转义符(\n,\t,\)
拓:用isNAN()判断是 为非数字类型,NAN(not a number)
字符串长度:str.length
获取数据变量类型:typeof num
数据类型的转换
其他—字符串类型(string)
- toString(num)eg:var str=num.toString();
- string(num) eg:str=String(num);
- 隐式转换:用“+”拼接’ ’ eg:str=(num+’ ');
其他—数字类型(num)
- pasInet(age);
- parseFloat(age);
- Number(age);
- 隐式转换:利用算数-、*、/
转换为布尔型
除了’ ',0,NAN,null,undefinded转换为布尔类型为false,其他的皆为ture
运算符导读
- +、-、*、/、%(取余)
- 递增、递减运算符:num++,num–
- 关系运算符(返回值为布尔型):<、>,、=、、!=、=,!===
- 逻辑运算符:&&,||,!
- 赋值运算符:=,+=,-=
运算符优先级:
()
++,--
先*、/后+、-
>、>=、<、<=
==、!=、===、!==
先&&后||
=(赋值)
,(逗号)
js流程控制
顺序结构
分支结构
循环结构
分支结构
- if(条件表达式){ 执行语句}else{执行语句}
- 多分支语句:if(){}elseif{}else{}
- 三元表达式:条件表达式?表达式1:表达式2
- switch语句(表达式){
case value1:执行语句;break;
case value2:执行语句;break;
case value3:执行语句;break;
default;执行语句;
}
循环结构
for循环
while循环
do…while循环
js数组
创建数组:var arr=new Array();
访问数组元素:数组名[索引号](从0开始)
js函数
- 函数是封装了一段可以重复使用的代码块。
- 声明函数:function 函数名(){};第二种声明方式,匿名表达式,var 变量名=function(){}
- 调用函数,调用才执行:变量名=function(实参);
- arguments的使用:存储了用户传过来的所有实参,是伪数组,具有lenght长度,按索引的方式存储。
- 函数可以调用函数。
js的作用域
- 代码名字(变量)在某个范围内起作用和效果,目的是为了提高程序可靠性,减少命名冲突。
- js的作用域(es6之前):全局作用域(整个script标签或整个js文件),局部作用域(函数内部)。
- 根据作用域不同分为局部变量和全局变量;
- js里面没有块级的作用域(即在{}中间的变量没有作用域,eg:if(){num=10;},其中num非局部变量),es6新增的块级作用域。
- 作用域链:内部函数访问外部函数的变量采用的是链式查找的方式来决定取哪个值,也就是就近原则:
eg:
var num=10;
function fn(){
var num=20;
function fun(){
console.log(num);
}
}
结果为20
js预解析
js执行分两步:预解析 代码执行;
预解析:
- js引擎会把js里面所有的var还有function提升到当前作用域的最前面;
- 变量预解析(变量提升):把所有的变量声明提升到作用域最前面,不提升赋值操作;
- 函数提:把函数声明提升到当前作用域最前面,不调用函数;
代码执行:
按照书写顺序从上至下执行代码。
js对象
无序的相对属性和方法的集合。
创建对象的方法:
- 字面量创建:var obj={}
eg:
var obj={
uname:“张”;
age:"18";
sayHi:function() {
console.log('hi');
}
}
- new object 创建对象
用等号赋值的方法添加等号和方法:eg:
var obj=new object();
obj.uname='张';//追加
obj.age='18';
调用方法:
对象名.属性名(eg:obj.uname)
对象名[‘属性名’] (eg:obj[“age”])
对象名[表达式] (eg:x = “age”; obj[x])
遍历对象:
for…in 循环
for (变量 in 对象 ){}
eg:
for (var k in obj){
console.log(k);//遍历属性名
console.log(obj[k]);//遍历属性值
}