- javascipt
初级(es5 ecmascript5 ecmascript6 7 8)
中级 内置对象 自定义对象 dom bom 事件流 逻辑算法 ajax(重点 原理)
高级 继承 原型链 设计模式
javascript作用: 前端html页面的交互,可以实现 效果(动画,操作效果) 数据展示 数据验证 访问数据 (小游戏开发 api接口访问实现(天气预报 地图api ))等等
初级:
javascript编程语言如何嵌入到网页
1.内嵌写法 head body里面
以script标签的方式去写入
2.外部引入
head body 内部进行引入script标签
标签内部注释:
ctrl+shift+/ 多行注释
ctrl+/ 单行注释
在script标签内部写入可执行代码:
- es5语法:
数据类型: 6个数据类型
数字: Number
字符串:String
真假型:Boolean
对象型:Object
空值引用:Null 占位置 没人
未定义类型:undefined
对象型细化:
函数类型:Function
日期类型:Date
数组类型:Array
自定义对象:{}
以上的六种数据类型可以分为两种大类型:
1.值类型 number boolean Null undefined (占用的空间大小固定不变)
2.引用类型 Object string (占用的空间位置大小可变 存放在堆种 指针引用)
面试可能会问数据类型的强制转化:(什么是装箱什么是拆箱)
装箱: 值类型转化引用类型
拆箱: 引用类型转化值类型
至于用什么方法 后边再说:
- js 如何声明变量(定义变量)
小常识: 变量:可变的量 可写可读
常量:不可变的量 只读
声明变量的关键字:var 一个var 全部声明: 但是js严格区分大小写:
例如java : int a=10; float num=1.0; bool n=true;
js里面声明变量的语法规则是:
var 变量名称 是否初始化(是否给值):
变量的命名:
驼峰命名: UserName
帕斯卡命名: userName
带符号 _ user_name
不要重数字
- 函数
(方法)
js里面 主动为方法 被动为事件 都是调用函数
函数的关键字: function
如何声明函数:
function 函数名称(){}
功能: 代码的封装
//常规函数
function method(函数的参数列表){
/*
* 代码区域
* */
}
1.具名函数 -----这种函数具有声明提前
function method(函数的参数列表){
/*
* 代码区域
* */
}
2.不具名函数(匿名函数) --没有声明提前
var fun=function (){
}
(function () {
})
函数的执行
具名函数执行: 函数名称();
匿名函数:
//自执行函数
(function () {
console.log("匿名函数执行");
})();
var fun = function () {
console.log("匿名函数执行");
}
fun();
函数还可以分为 带参函数 函数具有参数列表
function User(a,b,c){
console.log(a,b,c);
}
User(1,true,3);
function UserName(){
//函数的参数列表对象上
//arguments 是个集合类型
//length 属性 代表参数列表的长度
// key:value 键值
console.log(arguments[0],arguments[1]);
}
UserName('小明','男');
var fun2=function (a,b,c){
console.log(a,b,c);
}
fun2(1,2,3);
var fun3=function (){
console.log(arguments);
}
fun3(1,2,3);
(function (a,b){
console.log(a,b);
})(1,2);
(function (){
console.log(arguments);
})(1,2);
函数可以分为有无返回值
function Ifon() {
//函数代码执行完成之后 返回 return 值(任意类型)
return '你好';
}
console.log(Ifon());
var fun4 = function () {
return true;
}
var val = fun4();
console.log(val);
var num=(function (){
return 100;
})();
console.log(num);
-
变量的作用域:
1.局部变量 (作用于当前的代码块区域) 定义的局部变量不会出现在window
2.全局变量 (整个作用域) 定义的全局变量默认属域window -
如何检测数据类型
使用关键字: typeOf
instanceof 判断类型的 用于引用类型 -
数据类型的强制转化 装箱拆箱
//创建引用类型
var str='abc'; //值类型
//转化引用
var str_1=new String(str); //String 类
//转化为值类型
console.log(str_1.toString()); //拆箱
/*
* 数字类型和字符串类型的转化
* */
var s="1234.1111";
console.log(parseInt(s)); //转化为数字类型 取整
console.log(parseFloat(s)); //转化为数字类型
//parseInt parseFloat 也可以使用它去符号 符号在数字的后边
var money='¥999.999';
console.log(parseFloat(money)); //NaN 不是个数字 not a number
var num=123;
console.log(typeof num.toString());
/*
* 值类型有长度吗 有长度属性
* */
var a=10;
console.log(a.length);
var b="abcdef";
console.log(b.length);
- 闭包
概念: 把局部变量闭包成当前作用域的私有变量 —闭包
function Method() {
var num = 1;//闭包变量
//闭包函数
return function () {
num = num + 5;
console.log(num);
}
}
var fun = Method();
fun();
fun();
fun();
fun();
优点:把局部变量拿到作用域的外部使用。
缺点:闭包的变量会存到内存里面 , 大量使用闭包会导致内存泄漏。
做开发 尽量避免使用闭包
- 垃圾回收机制:
概念:指的是方法内部的局部变量在使用完成之后 自动回收,下次调用函数的时候会重置
如果通过闭包 没有自动回收 要进行手动回收
-
js里面的运算符 结构语句
算数运算符 + - * / % = == === ++ –
= == ===
=赋值 == 判断两边值相等 但不限定类型 === 恒等 判断两边值和类型相等++自增+1 --自减-1 前置还是后置
前置是先自增或自减在运算 后置是先运算 在自增自减
逻辑运算符 &&两者都 || 两个满足其一 ! 取反面
数字里面 0为false 非0为true
比较运算符 > < >= <= !=
逻辑结构 (条件)
if(){}
if(){}else{}
if(){}else if(){}else{}
三元运算符: 简写版的逻辑结构: 可以使用到方法内部
条件?true:false
选择结构
switch(属性){
case: break;
case: break;
case: break;
default: break;
}
循环语句:
for 循环
for(;;) 死循环 1.变量 2.条件 3. 变量自增或自减
{
}
while(){} 先判断后执行
do{} while() 先执行后判断 至少执行一次