目录
一些简单的表达式:
//基本数据的直接量,也是一种表达式
100;
200;
"hello";
; //就这样也是一个表达式
//声明表达式
var a;
function fn(){}
//变量表达式:
a;
//函数表达式:
fn;
表达式与表达式组合,就变成了语句
var a = 20; //var a是一个声明表达式,20是一个基本数据表达式,=是一个赋值表达式
//组合起来 var a = 20;就是一个语句
语句和语句配合,就变成了程序。
基本数据是不可以分割的,因为每一个数据,系统已经提前设定好了。
数组初始化表达式:
var arr = [10,20,54]; //数组直接量
var arr2 = new Array(); //数组语法糖写法 等价于 []
var arr3 = new Array(3); //代表数组arr3的length属性值 =3
var arr4 = new Array(3,4,5,6); //代表数组arr4为[3,4,5,6]
分析:var arr3 = new Array(3); 其中的3是什么意思?代表arr3的length属性值为3,但是arr3数组中一个元素没有,只是length属性为3
var arr3 = new Array(3); //[,,,]
console.log(arr3.length); //3
var arr4 = new Array(3,4,5,6);
console.log(arr4); //(4) [3, 4, 5, 6]
对象初始化表达式:
var obj = {name:"karen"}; //对象直接量
var obj2 = new Object(); //创建一个对象 对象创建的语法糖写法 等价于{}
obj2.name = "jack"; //给obj2对象添加一个属性name,其所存值为jack
console.log(obj,obj2);
成员访问表达式,属性访问表达式:
引用数据通过["key"]的形式访问成员(属性)或者通过点语法
var a = {name:'yourname', age:22};
var b = {
p1:{name:'华子', age:22},
p2:{name:'华耀', age:25},
p3:{name:'华赓', age:24}
};
var c = [1,2,3,4,'a','b','c'];
var d = [['a','b','c'],['d','e','f'],['g','h']];
console.log(a.age); //22
console.log(b.p2['name']); //对象用中括号访问时,注意加引号! 华耀
console.log(c[4]); //a
console.log(d[2][1]); //h
调用表达式:取值并调用合起来就是调用表达式
调用表达式fn() 是执行函数或方法的语法表示;
如果调用的函数或方法有返回值,则表达式的值就是该返回值;
如果调用的函数或方法没有返回值,则表达式的值是undefined;
简单理解就是函数或方法名称后面跟上小括号代表执行;
function fn1(){
return 0; //fn1有函数返回值
}
var a1 = fn1();
console.log(a1); //0
function fn2(){
//fn2没有函数返回值
}
var a2 = fn2();
console.log(a2); //undefined
取值得到了一个函数,然后加小括号就可以调用函数。
取值:
变量可以取值,数组可以取值,只要能得到值的表达式,都是取值
var arr = [100,function(){console.log(123)},200];
arr[1]();
结果分析:arr[1]取值,得到一个函数,再加(),运行此函数arr[1]() 最终结果就是打印123
其它一些取值:
eg:obj.xx(); 表示什么意思? 对象调方法
obj.xx得到一个函数,然后加小括号可以调用函数
var obj = {
xx:function(){
console.log(123);
}
}
obj.xx(); //对象调方法 obj.xx取到对象的函数(方法),然后再加小括号运行
匿名函数自调用
(function(){})(); //取匿名函数的返回值,返回值是一个函数,再加()调用运行
后面会深入学习匿名函数自调用,这里只是知道就好。
算术表达式:
+ ,- , * , / ,%
//一些特殊的情况
var a = true;
var b = false;
console.log(a+b);
结果分析:结果为1,因为true转化为1,false转换为0,1+0=1
var a = [];
var b = 10;
console.log(a+b); //"10"
var a1 = [10];
var b1 = 10;
console.log(a+b); //"1010"
console.log(a+b+20); //"101020"
结果分析:数组在运算过程中,会转为字符串,[ ]-->" " ,[10]-->"10"
而 + 会把除字符串类型的其它数据类型转为字符串类型
所以:"" + 10 先把10转为字符串"10",再进行字符串的拼接 就是""+"10"="10"
所以:"10"+"10"+"20",再进行字符串的拼接 结果就是:"101020"