【知识整理】javascript基础语法总结(2)——数据类型转换和运算符

一.数据类型转换:(js是弱类型编程语言);
   1.声明变量时,不用考虑变量中将要存储的数据类型;
   2. 赋值时,由系统自动动态判断数据的类型;(注:因为是动态判断同一个变量,先后可保存不同类型的数据。)
   3. 运算时,js会根据自己的需要,动态转换数据类型。
二.数据类型转换分类:
   1.隐式转换:无需程序员干预,而由系统自动完成的转换;
     算数运算中的隐式转换:
       1) 默认一切转数字类型,做算数计算.( boolean类型:true转为1,false转为0);
       2)“+”法中,“+”左右只要有一个是字符串,都转为字符串,“+”变为字符串拼接;(其他类型转字符串: 在字面量前后直接加引号);
       例:boolean类型转字符串:true转为”true”
   2.强制转换:程序员主动调用专门函数完成的转换;
     1)任意类型转为字符串(String):
       (1)var str=x.toString();(null、undefined无法转为字符串)
       (2)var str=String(x);(任意类型均可以转为字符串)
     2)任意类型转为数字(Number):
       (1)var n=Number(x);(可以将纯数字字符串及其他非字符串类型转为数字使用)
            特殊:Number("")-->0
                  Number(null)-->0
                  Number([])-->0
                  Number(undefined)-->NaN
       (2)var n=parseInt(str);(将字符串转为整数时使用,如果传入的不是字符串,则先隐式转为String)
            原理:从头开始读取字符串中每个字符,跳过开头的空字符,只读取数字字符,只要碰到第一个不是数字的字符,就退出;
   例:var n = parseInt(  '12aaa'); //12
       (3)var n=parseFloat(str);(将字符串转为小数时,用法和parseInt用法完全一样,但可以识别第一个碰到的小数点。)
            例:var n = parseFloat(  '12.5aaa'); //12.5
       (4) Number( x) 与 parseInt(str)及parseFloat(str)的区别:
             Number只认识纯数字组成的字符串,但Number却可转boolean类型; parseInt(str)和parseFloat(str)认识包含非数字字符的字符串开头位置的数字,但转不了boolean类型   
     3)任意类型转为布尔类型(boolean):
       (1)var bool=Boolean(x);(除 ""   0    NaN   undefined   null 转为false外,其余都转为true)
三.表达式:由数据,变量和运算符组成的公式 ,默认情况下,从左向右,两两计算;
   1.NaN(Not a Number):“不是一个数字”的“数字(类型:Number);”
   何时遇到:当无法转为数字时,或无法正常计算时,结果都为NaN
   特点:和任何数据做计算,结果永远为NaN
   typeof(x): 返回x的数据类型名称: Number String Boolean  undefined object
   typeof(x): 可以测任意一个数据的数据类型(原始类型)
四.运算符:程序中模拟人的思维运算或判断的符号
   1)算数运算符:+、-、*、/、%、++、--(返回值只能是number,如果无法运算,返回NaN)
   2)算数运算中:默认转Number,再进行转换;(特殊:‘+’法中,碰到字符串,都转字符串,再拼接)
   3)%模运算(取余数):m%n : m/n,取除不尽的余数部分
   4)递增,递减运算:++  --;
     (1) ++n、n++: n=n+1; 将n中的值+1,后再保存回n中;(二者变量值都会增加1,但是返回值不一样,++n返回新值,n++返回旧值);
           例1: var my=10;
       var lp=my++;
console.log(lp);//10
console.log(my);//11
           例2:var my=10;
var lp=++my;
console.log(lp);//11
console.log(my);//11
   5)关系运算:>、<、>=、<=、!=、==、===用于做比较,比大小( 返回值为true或false,默认都转为数字再比较)
     (1)特殊情况:如果无法转为数字:转为NaN,NaN不等于,不大于,不小于任何值,甚至自己
     (2)isNaN(num): 专门判断一个数值是否为NaN,如果是NaN,就返回true,否则返回false
     (3)如果两个都是字符串,则从左到右按位比较每个字符的unicode号,直到可以比较出结果为止
   6)逻辑运算:多个条件(关系运算),综合得出最后的结论,只可能返回true/false;(默认转换为bool类型)
     (1)&&: 读作且,程序中称为"逻辑与"。(条件1&&条件2: 必须条件1和条件2都为true,结果为true,只要任意一个为false,结果为false)
     (2)||: 读作或,程序中称为"逻辑或"。(条件1||条件2:只要任意一个条件为true,结果为true,只有所有条件都为false,结果才为false)
     (3)!: 读作不,程序中称为"非"。(颠倒条件的true/false结果)
     (4)短路逻辑:逻辑运算中,如果前一个条件已经可以得出最终结论,则后续所有条件不再执行!
   7)赋值运算:=,将等号的右边的值保存在左边的变量中。赋值表达式也有返回值,会返回将要保存回变量的新值。
   8)扩展赋值运算+=、-=、*=、/=、%=;对变量内部的值进行修改的简写方法
      例: a=a+5等同于a+=5,表示累加。
   9)三目运算(条件运算  三元):根据不同条件,判断执行不同操作,或返回不同的值
     (1)语法:条件1?操作1:条件2;(如果条件1为true则执行操作1,否则执行操作2);

你可能感兴趣的:(javascript,javascript,js,html5,web前端,编程语言)