前端学习_06.Script语法基础

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Uncle_nly/article/details/78634960

ECMAScript语法基础

弱类型语言

  • a)语法约束不是很严格:变量定义、参数定义、方法调用等等

类型的定义

  • a)声明统一用var进行声明(弱类型表现),不需要具体到指定类型不声明
  • b)赋值的时候才确定指定类型是什么
  • c)类型分两大类:
    i.基本类型:number、string、boolean、undefine、function(Function)
    ii.对象类型:一些对象定义,比如:Array、Date、Object(Number、String、Boolean、Function、window、document、Math、null)、等

转换类型

  • a)数字字符串变量进行算术运算时隐式类型转换为number
    i."11"-1+2 结果为12,过程:
    (1)"11"字符串转换为number,进行-减数运算,值为10 (类型:number)
    (2)10 和 2 进行加数运算,最终结果为12 (类型:number)
    ii."11"+2-1 结果为111,过程:
    (1)"11"字符串和数字2 作字符串连接,值为"112"(类型:string)
    (2)"112"字符串转换为number,进行-减数运算,最终结果为111 (类型:number)
  • b)部分变量进行逻辑运算时隐式类型转换为boolean
    i.转为false来进行识别:
    (1)0 、-0、 null 、 undefine 、空字符串、!1
    ii.转为true来进行识别:
    (1)非0数字、非空字符串、!0
  • c)转换为数字
    i.Number()方法
    (1)不能解析不是纯数字的字符串
    (2)空字符串转换为0
    (3)Boolean值中true转换为1,false转换为0
    (4)不能解析时返回NaN(类型:number,但值为NaN----‘不是个数字’)
    ii.parseInt()方法可解析一个字符串,并返回一个整数。
    (1)只有字符串中的第一个数字会被返回,其余部分截去。
    (2)空字符串不能解析转换
    (3)不能解析时返回NaN(类型:number,但值为NaN----‘不是个数字’)
    iii.parseFloat()方法解析一个字符串,并返回一个浮点数
    (1)只有字符串中的第一个数字会被返回,其余部分截去。
    (2)空字符串不能解析转换
    (3)不能解析时返回NaN(类型:number,但值为NaN----‘不是个数字’)
    iv.算术运算加(+)和减(-)能在以下情况下降字符串转换为数字
    (1) + "string" 转换为NaN(类型:number,但值为NaN----‘不是个数字’)
    (2) + "11" 转换为11 (类型:number)

检验类型

  • a)检验是否是非数字值,isNaN函数
    i.语法isNaN(obj)
    ii.返回的是一个布尔值
    (1)isNaN(NaN) 返回值为true
    iii.校验内容:可以是字符串也可以是number
  • b)检验类型,typeof函数
    i.语法typeof obj
    ii.返回基本类型(五种)或者object对象类型 的字符串
    (1)typeof NaN 返回值为"number"
    (2)typeof null 返回值为"object"
    (3)typeof new Array() 返回值为"object"
    (4)typeof new Date() 返回值为"object"
    (5)typeof function(){} 返回值为"function"
    iii.校验内容:不能用来判断日期和数组
  • c)检验对象和函数,instanceof函数
    i.语法obj instanceof Object
    ii.返回的是一个布尔值
    (1)obj instanceof Array 可以判断变量是否为数组
    (2)obj instanceof Function 可以判断变量是否为函数
    (3)obj instanceof Date 可以判断变量是否为日期
    iii.校验内容:不能用来判断字符串和数字
  • d)检验空数组
    i.语法(obj== false)
    ii.返回的是一个布尔值
    (1)非空数组(obj == false)返回 false
    (2)undefind(obj == false)返回 false
    (3)空对象(obj== false)返回 false
    (4)非空对象(obj== false)返回 false
    (5)空数组(obj == false)返回 true
    iii.校验内容:不能用来判断undefind和空/非空对象,不能判断["0"]和 []
  • d)检验对象是否为空
    i.语法(Object.keys(obj)== false)
    ii.将对象转化为数组,再校验,返回的是一个布尔值
    (1)非空数组(Object.keys(obj)== false)返回 false
    (2)undefind(Object.keys(obj)== false)报错
    (3)空对象(Object.keys(obj)== false)返回 true
    (4)非空对象(Object.keys(obj)== false)返回 false
    (5)空数组(Object.keys(obj)== false)返回 true
    iii.校验内容:不能在空数组和空对象之间判断,不能判断["0"]和 []
  • d)拓展constructor

猜你喜欢

转载自blog.csdn.net/Uncle_nly/article/details/78634960