1,Javascript:基于对象和事件驱动,并具有安全性的客户端脚本的脚本语音。由三部分组成 ECMAScript(核心);DOM(文档对象模型);BOM(浏览器对象模型)。
2,基本的数据类型:数值(number) 字符串(string)布尔(boolean)未定义(undefined)空值(null)对象(object)
-
//数据类型又分为值类型和引用类型
-
-
//值类型:是变量和值全部存储在栈里面
-
//引用类型:值存储在堆里面,栈里面存储定义的变量和存储值的路径
-
-
var a = 1
-
console.log( typeof(a)) //a的原型为number
-
b = a
-
b = 2
-
console.log(a) //a = 1
-
//上面的例子很好的说明值类型的存储方式
-
-
-
var c = new Object
-
console.log( typeof(c)) //为对象类型
-
-
c.value = 2
-
b = c
-
b.value = 3
-
console.log(c.value) //3
-
//即对象为引用类型
3,js类型转换分为隐式转换和显式转换,例如parseInt()转化为数字parseFloat()转化为小数。
4,自增,自减: ++a,--a先加减后运算;a++,a-- 先运算后加减;
5,js变量分为局部变量和全局变量,在函数内局部变量大于全局变量
6,变量名提升:
-
var foo = 1;
-
function(){
-
console.log(foo); // undefined
-
var foo = 2;
-
console.log(foo); // 2
-
}
-
//js中,会全局先“看”一下代码,会把定义的变量提升到函数开头,
-
//但只会提升定义变量,不会提升定义的变量值
-
//所以第一次打印为undefined
7,递归函数:用的不多,但在特殊的情况下非常有用。 例如:汉诺塔,斐波那契
递归:函数自己调用自己,上一次循环的结果为下一次循环的开始
步骤:1,先找临界值,即无需计算就能获取的值。
2,找到本次和上一次的关系。
3,假设当前函数已经可以使用了,调用自身计算上一次的的运算结果。
8,数组:是存放一组数的数据类型。
创建方式:1,字面量 可以放数字,字符,对象 。例如:var arr=[1,2,3,4,5]
2,使用构造函数创建数组。例如:var arr = new Array(1,2,3,4,4)
数组的操作函数:push/pop/unshift/shift
slice/splice
reverse/sort
join
-
var arr = [ 1, 2, 3, 4]
-
//push:向数组尾部添加一个元素
-
arr.push( 100);
-
console.log(arr) //[1,2,3,4,100]
-
//pop:删除最后一个元素
-
arr.pop()
-
console.log(arr) //[1,2,3,4]
-
//unshift:向头部添加一个元素
-
//shift:在数组头部删除一个元素
-
//slice:可以有两个参数 第一个是开始拷贝的位置,第二个是数是长度 返回新的数组
-
var resArr = arr.slice( 2)
-
console.log(resArr) //[3,4]只有一个参数时。第二个参数默认到结尾
-
var resArr1 = arr.slice( 2, 3)
-
console.log(resArr1) //[3]
-
//splice:删除和替换
-
arr.splice( 1, 1) //第一个是要删除的下标,第二个是长度
-
console.log(arr) //[1,3,4]
-
arr.splice( 1, 1, 100) //第三个是要替换的内容
-
console.log(arr) //[1,100,4]
-
//reverse 逆序,对原数组改变
-
//sort排序
-
-
function box(a,b){
-
return a-b; //升序,,,降序:b-a
-
}
-
arr.sort(box)
-
console.log(arr) //[1,4,100]