JavaScript学习笔记(五)——表达式

表达式

1、 原始表达式

  1. 原始表达式不可再分割,是最小单位的表达式;

  2. 原始表达式包含直接量、关键字(保留字)和变量名;

  3. 常见原始表达式举例:

//直接量
1;
1.02;
'hello world!';
//保留字
true;
false;
this;
//变量名
name;
hqyj;
age;

 

2 、数组初始化表达式

  1. 可以简单理解为:数组直接量;

  2. 数组初始化表达式:由中括号([])和其内用逗号(英文状态 ,)分隔开的列表构成;

  3. 初始化的结果是创建一个新的数组;数组的元素是逗号分隔开的表达式的值;

  4. “数组初始化表达式”中的“元素”也可以是“数组初始化表达式”,即多维数组;

  5. 常见数组初始化表达式举例:

    //数组初始化表达式
    [];
    [1,2,3,4,'a','b','c'];
    [['a','b','c'],['d','e','f'],['g','h']];
    //中间省略的元素会怎样?最后省略的元素又会怎样?
    [1,,,,6,,,] 
   数组直接量的语法允许有可选的结尾的逗号,故[,,]、[1,,]、[,1,]这三种情况JS引擎会认为最后一个逗号是结尾的逗号,所以就认为只有两个元素;而[,,1]长度为三,这种情况人为的给最后一个逗号后面又添加了一个元素,所以最后一个逗号就不是结尾了,所以我们就能想到[,,1,]的长度仍然为3。
​
   小练习:
​
   ```js
   var a1 = [];//0
   var a2 = [,];//1
   var a3 = [,,];
   var a4 = [1,,];
   var a5 = [,1,];
   var a6 = [,,1];
   var a7 = [1,,3];
   //以上数组各有几个元素?

 

3、 对象初始化表达式

  1. 可以简单理解为:对象直接量;

  2. 对象初始化表达式:由花括号({})和其内用逗号(英文状态 ,)分隔开的列表构成;

  3. 初始化的结果是创建一个新的对象; 对象的属性是逗号分隔开的表达式的值; 属性包括属性名和属性值,属性名和属性值之间用冒号隔开;

  4. “对象初始化表达式”中的“元素”也可以是“对象初始化表达式”,可以任意层级嵌套;

  5. 常见对象初始化表达式举例:

    //对象初始化表达式
    {name:'yourname', age:22};
    ​
    var obj={
        p1:{name:'华子', age:22},
        p2:{name:'华耀', age:25},
        p3:{name:'华赓', age:24}
    };

4 、函数定义表达式

函数定义表达式定义一个JavaScript函数

  1. 可以简单理解为:函数直接量;

  2. 表达式的值是这个新定义的函数;

  3. 函数表达式举例:

​
   ```js
   var fn = function (a, b) {
     return a+b;
   }
   fn()
​
   //函数声明
   function fn(a, b) {
     return a+b;
   } 
   fn();                

5、 属性访问表达式

属性访问表达式得到一个对象的属性或者一个数组的元素值

  1. 有两种访问方式:点(.)、中括号([]);

  2. 点的访问方式更方便,中括号的访问方式使用所有情况;

  3. 来个例子吧:

    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);
    console.log(b.p2['name']);      //对象用中括号访问时,注意加引号!
    console.log(c[4]); 
    console.log(d[2][1]); 
    ​

 

6、 调用表达式

调用表达式fn() 是执行函数或方法的语法表示;

  1. 如果调用的函数或方法有返回值,则表达式的值就是该返回值;

  2. 如果调用的函数或方法没有返回值,则表达式的值是undefined;

  3. 简单理解就是函数或方法名称后面跟上小括号代表执行;

    看个例子:

    fn(1, 2);
    Math.max(1,2,3);//3
    a.sort();

 

7、 对象创建表达式

由函数调用表达式延伸而来,前面加个new即可;

  1. 如果不需要传递参数,函数后面的小括号可以省略;

    看个例子:

    new Array(1,2,3);   //数组长度为3,元素为[1,2,3]
    new Array(3)        //数组长度为3,元素为空[,,,]
    new String('hello world!');
    Number()/Boolean()/Object()/Function()

 

8、算术表达式

首先回顾一下大家都知道的算术运算符:加减乘除取余,+-*/%;

  1. +:数字相加 或 字符串连接;false+true

    加法操作的行为表现:

    一、如果其中一个操作数是引用类型,优先调用valueOf求值后可以进行加法运算,则加起来;不行再调用toString,再进行字符串拼接。

    二、如果其中一个操作数是字符串的话,则另一个也会转成字符串。

    三、如果两个操作数都是数字,则进行加法运算。

    几个例子:

    console.log(1 + 5);             
    console.log('1' + 5);               
    console.log(new Date() + '--ok');   //
    console.log(12 + NaN);          
    console.log(true + true);       
    console.log(201 + null);    
    console.log(203 + undefined);   
    console.log(3 + 5 + '猜猜看');  
    //加法运算的结果要么是数字要么是字符串
  2. 其他的算术运算符大家都知道了:

减乘除取余----运算结果全都是number类型

posted @ 2022-06-09 17:03  小狐狸ya  阅读(59)  评论(0编辑  收藏  举报