全局变量(变量提升):
全局环境 函数环境 eval
js 预解析
var/function 会进行定义
var a = undefined;
在执行阶段才为其赋值
var a 只定义但不赋值
function 即定义而且赋值
console.log(a) //undefined
var a = "111"
console.log(a) //"111"
console.log(sum(1,2))
var sum = function (x,y){
return x+y
}
console.log(sum(1,2))
function sum(){
return x+y
console.log(arguments);
console.log(argument instanceof Array)
for(var i=0;i<arguments.length;i++){
console.log(arguments)
}
}
argument 不是一个真正的数组
怎么把argument转化为真正的数组:
应该是Array.prototype.slice.apply(arguments)
执行上下文栈(stack)
作用:保证执行顺序
function a(){
b()
}
function b(){
c()
}
function c(){
console.log('hello world')
}
a()
列
var a = 222;
function a(){
var a = 111
return function(){
var b = "333"
}
}
数组的定义
字面量定义
vra arr = [1,2,3,4];
构造函数的定义
var arr1 = nw Array();
console
var arr = [1,2,3,4];
var arr1 = ["张三",true,{name:"李四"},null]
console.log(arr1);
链接数组:concat
var newArrary = arr.concat(arr1)
console.log(nwArray)
//操作子数组方法
splice 插入 删除 替换
Slice(start,end) 数组的截取
var arr = [1,2,3,4,5,6];
//arr.splice(起始下标位置,删除的个数,替换的元素)
arr.splice(1,2,3,4,5)
console.log(arr)
Slice 数组的截取
//arr.splice(3,0,4,4)
var newArr = arr.slice(1,3)
console.log(newArr)
//向尾部追加push
arr.push("张三")
//向头部追加unshift
arr.unshift("李四")
//头部删除shift
arr.shift()
//删除尾部元素pop() //弹出
arr.pop()
console.log(arr)
数组的排序sort
升序:a-b 降序:b-a
var f = function(a,b){
return b-a;
}
var result = arr.sort(f)
console.log(result)
数组的定位indexOf***
如果数组中存在,则返回其下标,如果没有则返回-1
var result = arr.indexOf(5)
console.log(result)
lastIndrxOf(从后往前进行遍历)
var result2 = arr.lastIndexOf("12")
console.log(result2)
Index和lastIndexOf区别:
结果一样,遍历顺序不一样
一个从前往后:IndexOf
一个从后往前:lastIndexOf
API 浏览器或者程序给你提供方法,方便调用
三元运算符
if else
if else if else
var flage = true
if(flage){
console.log("111")
}else{
console.log("222")
}
flage?true(结果): false(结果)
3>5? console.log("111"):console.log("222")