javascript初学习
- javascript的学习过程:
初级学习:es5(esmascript5)、esmascript6、esmascript7、esmascript8
中级学习:内置对象、自定义对象、dom、bom、事件流、逻辑算法、ajax。其中ajax是学习重点。
- 高级学习:继承、原型链、设计模式。
- javascript的学习方法:
语法+案例
- javascript的作用:
前端html页面的交互,可以实现效果(动画,操作效果)、数据展示、数据验证、访问数据,还可以做小游戏开发,api接口访问,如天气预报和地图api等等
javascript初级学习
javascript编程语言的嵌入方法
- 内嵌写法:写到head或者body里面,以script标签的方法去写入
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> /* * script标签内部是代码区域 * */ </script> </head> <body> </body> </html>
其中 type="text/javascript" 可要可不要
- 外部引入:在head或者body内部进行引入,同样以script标签引入
建立一个javascript文件,并在head或者body里面加入嵌入代码
<script type="text/javascript" src="js/index.js"></script>
两种方式都是在script标签内部写入可执行代码
es5语法
数据类型(6种数据类型)
数字型 Number
字符串型 String
真假型 Boolean
对象型 Object
空值引用型 Null
未定义类型 underfined
分类:
这里会涉及到数据类型的强制转化,也就是数据的装箱和拆箱。
js声明变量(定义变量)
- 变量与常量:变量是可变的量,可写可读。常量是不可变的量,只读。
- 声明变量的关键字:var。 一个var全部声明,js严格区分大小写。
- 声明变量的语法规则:var 变量名称 是否初始化
var a; // 声明但未初始化 var b=10; // 声明+初始化
- 变量的命名
驼峰命名: UserName
帕斯卡命名: userName
带符号 _ user_name
不要重数字- 输出代码到控制台检测:console.log(变量名称)
声明变量提前:
var stu_1; console.log(stu_1);/* underfined */ var stu_2= '小明'; console.log(stu_2);/* 小明 */ console.log(stu_3);/* underfined */ var stu_3='小李'; console.log(stu_3);/* 小李 */ var stu_3; console.log(stu_3);/* 小李 */
执行结果:
函数
- 函数的关键字:function
- 函数的主要功能:代码的封装
- 函数的声明:常规函数——function 函数名称(列表参数){代码区域}
- 函数的第一种分类:根据函数是否有命名来分类。
(1)具名函数。
function method(){ }
(2)不具名函数,也叫匿名函数。
第一种
var fun=function (){ }
第二种
5.函数的执行:(function(){ })
(1)具名函数的执行:函数名称();
function method(){ console.log("我在执行") } method();
执行结果:
(2)不具名函数的执行:
第一种
var fun=function (){ console.log("匿名函数在执行") } fun();
执行结果:
第二种:自执行函数
(function(){ console.log("自执行函数在执行") })();
执行结果:
6.函数的声明提前:具名函数具有声明提前,匿名函数不具有声明提前。
7.函数的第二种分类:根据有无参数来分类。
(1)带参函数,有参数列表,函数的参数列表是根据自己的需求来写
function user(a,b,c){ console.log(a,b,c) } user(1,false,null); var fun1=function (a,b,c){ console.log(a,b,c) } fun1(1,2,3); (function (a,b){ console.log(a,b) })(1,2);
执行结果:
(2)不带参函数,没有参数列表。
function User(){ console.log(arguments[0],arguments[1]); } User('小明', '男'); (function (){ console.log(arguments[0]) })(1,2);
执行结果:
7.函数的第三种分类:根据有无返回值
(1)有返回值
var ifon1=function (){ return true; } console.log(ifon1()); var ifon2=(function (){ return 100; })(); console.log(ifon2);
执行结果:
(2)无返回值。常规的函数就是无返回值函数。
变量的作用域
- 局部变量:作用于当前的代码块区域
var name="张三";
name为全局变量
- 全局变量:作用于整个作用域,定义的全局变量默认属于window
function method(){ var sex="男"; console.log(name,sex); }
sex为局部变量
数据类型的检测与判断
1. 检测:使用关键字:typeof
<script> var a=1; var b="abc"; var c=true; var d=null; var e={}; var f=undefined; var g=function () {}; var h=[]; console.log(typeof a); console.log(typeof b); console.log(typeof c); console.log(typeof d); console.log(typeof e); console.log(typeof f); console.log(typeof g); console.log(typeof h); </script>
执行结果:
2.判断:使用关键字:instanceof----对引用类型有效
console.log(g instanceof Function);
执行结果:
装箱与拆箱
- 装箱:值类型转化引用类型
var str='abc';/*值类型*/ /*转化引用*/ var str_1=new String(str);
- 拆箱:引用类型转化值类型
console.log(str_1.toString());
数字类型和字符串类型的转化
var s='1234.11'; console.log(parseInt (s));/*转化为数字类型,取整*/ console.log(parseFloat (s));/*转化为数字类型*/
执行结果:
闭包
- 概念: 把局部变量闭包成当前作用域的私有变量
- 优点:把局部变量拿到作用域的外部使用。
- 缺点:闭包的变量会存到内存里面 , 大量使用闭包会导致内存泄漏。
js的运算符,结构语句
- 算数运算符: + - * / % = == === ++ -- = == ===,其中=赋值; == 判断两边值相等,但不限定类型;=== 恒等 ,判断两边值和类型相等 注意:++自增+1,--自减-1 。需要注意是前置还是后置,前置是先自增或自减在运算;后置是先运算,在自增自减
- 逻辑运算符:&&两者都;|| 两个满足其一; ! 取反面。数字里面 0为false 非0为true。
- 比较运算符:> < >= <= !=
- 三元运算符: 简写版的逻辑结构: 可以使用到方法内部-----条件?true:false
- 逻辑结构 (条件)
if(){} if(){}else{} if(){}else if(){}else{}
选择结构
switch(属性){ case: break; case: break; case: break; default: break; }
循环语句:
(1)for 循环
for(变量;条件;变量自增或自减) { }
(2)while循环
while(){} 先判断后执行 do{} while() 先执行后判断 至少执行一次