JavaScript_day04

day04内容

学习目标
1.操作符
2.数据类型转换

1.操作符

  1. 逻辑与 && (同真才真,有假则假) 也被称为短路语句
    可应用于任意数值。如果有一个操作数不是布尔类型,逻辑与就不一定返回boolean类型
    1.如果第一个操作数是
    null,NaN,undefined,false,0,""可被转换为false的值的时候返回该值
    2.如果第一个数其他,返回第二个数
    var s1 = 8;
    var s2 = “briup”;
    var s3 = “”;
    var result = s1 && s2; //briup
    var result2 = s3 && s2; //空字符串

  2. 逻辑或 ||(有真则真,同假才假)
    false ||
    如果两个操作数都是null,NaN,undefined,false,0,"“可被转换为false的值的时候返回该值
    如果第一个操作数是null,NaN,undefined,false,0,”" 则返回第二个操作数

  3. 布尔操作符, 非(NOT)
    逻辑非 !
    该操作符应用任何类型数值都返回一个【布尔值】。先将任意类型的数值转换为Boolean,然后取反,
    !a ==> !Boolean(a)
    !0 //true
    !"" //true
    !NaN //true
    !false //true
    连用两次逻辑非 ,就可以将任意数据类型转化为Boolean类型,!!a ==> Boolean(a)
    !!"" //false

  4. 三目运算符 ? :
    variable = boolean_expression ? true_value : false_value;
    如果boolean_expression为true,将true_value赋给variable,否则将false_value赋给variable

    例如:求任意两个数之间最大值
    function max(m,n){
    return m>n?m:n; //如果m>n为true返回m,如果m>n为false,返回n
    }

  1. 类型转换
    1. 其他数据类型到Boolean类型转换
      通过Boolean() 函数转换

      【Boolean true false】
      String 非空字符串 “”
      Number 任何非0 0和NaN
      Object 任何对象 null
      Undefined n/a undefined (n/a not applicable 不适用)
      例如:
      Boolean(""); //false
      Boolean(0); //false
      Boolean(NaN); //false
      Boolean(null) //false
      Boolean(undefined) //false
      Boolean(“briup”); //true
      Boolean(1); //true

    2. 其他数据类型到数值类型转换
      1.Number()
      1) 如果转换的值是null,undefined,boolean,number
      Number(true); //1
      Number(false); //0
      Number(null); //0
      Number(undefined); //NaN
      Number(10); //10 如果是数字值,原样输出
      2) 如果是字符串:
      Number(“123”); //如果仅包含数值,转换为对应的数值
      Number(“234.1”);//解析为对应的小数
      Number("+12.1");//首位为符号位,其余为为数值,转换为对应的数值
      NUmber(“1+2.3”);//NaN 符号位出现在其他位置,解析为NaN
      Number(“0xa”); //如果仅包含十六进制格式,转为为对应的十进制的值
      Number(“010”); //【注意!】不会当做八进制被解析,结果为10
      Number(""); //空字符串被转换为0
      Number(“123ac”);//包含其他字符: NaN
      Number(" 12"); //12
      2.parseInt()
      1) 如果转换的值是null,undefined,boolean,number
      parseInt(true); //NaN
      parseInt(false); //NaN
      parseInt(null); //NaN
      parseInt(undefined);//NaN
      parseInt(10); //10 如果是整数值,原样输出
      parseInt(10.3); //10 如果是小数,舍去小数点一级后面的内容
      2) 如果是字符串:
      parseInt(“123”); //123;如果仅包含数值,转换为对应的数值
      parseInt(“234.1”);//234;小数点后面的数值省略
      parseInt("+12.1");//12; 首位为符号位,其余为为数值,转换为整数
      parseInt(“0xa”); //10; 如果仅包含十六进制格式,转为为对应的十进制的值
      parseInt(“010”); //10; 【注意!】不会当做八进制被解析,结果为10
      parseInt(""); //NaN;空字符串被转换为NaN
      parseInt(“1+2.3”);//1; 如果首位为数值,依次向后解析,找到连续的数值,直到遇到第一个非数值的,将之前获取的数值转换为Number返回
      parseInt(“123ac”);//123;
      3.parseFloat()
      与parseInt() 类似,但是也有不同:
      1.字符串中的第一个小数点是有效的,而第二个小数点则无效其后的内容会被省略
      2.始终忽略前导0
      parseFloat(“22.3.4”) //22.3
      parseFloat(“022.34”); //22.34

    3. 其他数据类型到字符串类型转换

      1. toString()函数
        默认情况下,toString()是以十进制格式返回数值的字符串表示,通过传递参数,可以输入以二进制,八进制,十六进制乃至任意有效进制格式的字符串值
        var num = 10;
        num.toString(); “10”
        num.toString(2); “1010”
        num.toString(8); “12”
        num.toString(16); “a”
        但是null ,undefined 没有toString() 方法
        null.toString() //报错 TypeError: null has no properties
        undefined.toString(); //报错 TypeError: undefined has no properties
      2. String() 构造函数
        String(null) “null”
        String(undefined); “undefined”

m + n
		1) 当m,n不为String,Object类型的时候,先将m,n转换为Number类型,然后再进行计算
			true + false;	  //1;Number(true)+Number(false);
			true + 1;	  //2;Number(true) + 1
			null + undefined; //NaN;Number(undefined) -> NaN
		2) 当m,n有一个为String,无论另一个操作数为何(但不为对象)都要转换为String,然后再进行拼接
			"1" + true;	// 1true
			"1" + undefined;// 1undefined
			"1" + 1;	// 11
		3) 当m,n 有一个为对象,如果该对象既重写toString,又重写了valueOf方法,先调用valueOf方法获取返回值,将该返回值和另外一个操作数进行运算。如果该对象没有重写valueOf方法,将调用toString方法获取返回值,将该返回值和另外一个操作数进行运算。
			var o = {
				name:"briup",
				valueOf:function(){
					return "1";
				}
			}
			o+1;		//2;o+1

~~

note

~~
复习
5种基本数据类型
undefined
null
boolean
number
string
1种引用数据类型
Object类型
var obj = {
name:‘zhangsan’,
age:12,
key:‘test’
}
访问obj的属性
1.点表示法
obj.name
obj.age
2.中括号表示法
obj[‘name’]
obj[‘age’]
var key = ‘name’;
obj[key] //zhangsan

                obj['key']    //跟key变量是没有关系的,直接访问的是obj对象中的key属性。test
                obj.key  //test
    Array类型(直接或者间接继承自Object类型)
        var  arr  =  [3,4,5,true,{},{},[[6,7],2]];
        arr.length属性获取数组的元素个数,数组的长度
        访问数组的元素
            arr[index]
                index是索引,是下标,从0开始,到arr.length-1结束
                arr[3]    //true
                arr[6][0][1]        //7

    Function类型(直接或者间接继承自Object类型)
        声明函数
            function  test(a,b){}
        运行函数
            test(1,2)
typeof关键字
    返回值    
        undefined          undefined类型
        boolean              true/false
        number                1,2,3,NaN,Infinity...
        string                ''    ""    'hello'
        object                null  {}  []
        function            function(){}

操作符
算术运算符
+ - * / %
递增递减
++ –
后置++ – 先使用,后++ – a++
前置++ – 先++ --,再使用 ++a
赋值运算符
= 将等号右边的赋值给等号左边的
+= a+=2
-= a-=2
= a=2
/= a/=2
%= a%=2
一元运算符 + -
将其他数据类型转成number数据类型
比较运算符
== === != !== < <= > >=

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章