函数
1、如果a是一个函数 它的使用方式是运行大括号代码
a() //函数的调用==>让大括号的代码运行起来 而且调用一次就会运行一次
2、函数也是引用数据,引用数据就是一个内存空间(就是一个数据容器)
var f2=function() {
}
f2.age=200
var f3=f2
f3.age=100
console.log(f2.age) //100
3、函数是一种非常特殊的对象(引用数据) 因此 typeof检测函数的结果不在是object 而是function
var f1=function () {
}
console.log(typeof f1) //function
表达式
1、表达式:js的代码的形式
2、类型:基本数据的直接量(100、"hello"),变量名(var a),函数名(function fn () { })
4、表达式和表达式组合 就变成了语句 语句和语句配合 就变成了程序
var a=20;//变量声明初始化语句
5、基本数据是不可以分割的 因为每一个数据 系统已经提前设定好了
数组初始化表达式:
var arr = [10, 203, 54] //数组直接量
var arr2 = new Array() //[] 创建数组
var arr3 = new Array(30) //[]=>length:3
var arr4 = new Array(10,20,30) //[10,20,30]
console.log(arr2,arr3,arr4)
对象初始化表达式:
var obj={name:"karen"}//对象直接量
var obj2=new Object()//创建一个对象
obj2.name="jack"
console.log(obj,obj2)
成员访问表达式,属性访问表达式:(引用数据通过["key"]的形式访问成员(属性) 或者 通过点语法)
var arr=[10,230,40]
console.log(arr[2])
console.log(arr.length)//可以会出笔试题
调用表达式
取值得到了一个函数 然后加小括号就可以调用函数
取值: 变量可以取值 数组也可以取值 只能得到值的表达式 都是取值
var arr=[100,function(){console.log(123)},200]
arr[1]()
var obj={xx:function(){
console.log(123)
}}
obj.xx()//obj.xx得到了一个函数 然后加小括号就可以调用函数
(function(){})()
算术表达式:
var a=20
var b=4
var c=a-b//
var d=a-b+a//
var a=true
var b=false
console.log(a+b)//会把true转化为1 false转化为0
var a=[] //转为空字符串
var b=10
console.log(a+b+20)//1020
var a=[10]
var b=10
console.log(a+b)// 1010
自增和自减
一元操作符:只操作一个变量的符号
1、前置++ 就是先把变量修改了 再+1操作 (++a)
后置++ 就是先取变量的值 然后在+1操作 (a++)
无论前置还是后置 既有存值操作也有取值操作
var a=10
a=(a++)+(++a)
console.log(a) //10+12=22
取值和存值 就是把一个变量保存的数据取出来 把一个计算结果存入变量
一个变量只能保存一个数据
var a = 2;
var b = 3;
var c = (++a) + (b++) + b + (a++) - a;//3+3+4+3-4
console.log(c)//9
var obj={age:20}
var a=100
var c=(-a+++obj.age++)
console.log(c) //-80