• JavaScript (JS)基础:ECMAScript 浅析 (含Math基本方法解析)


    浏览器端JavaScript的组成

    ECMAScript:语法规范

    DOMDocument Object Model  文档对象模型,操作页面元素

    BOMBrowser Object Model  浏览器对象模型,操作浏览器功能

    基本输出语句

    console.log(“在控制台打印输出”)

    document.write(“在文档中书写”)

    alert(“弹窗输出”),省略了window调用对象,等同于window.alert

    fn(),函数调用也有归属,省略了window调用对象,等同于window.fn()

    变量的声明

    不能使用数字下划线开始,不能是关键字保留字如:var class = XXX是不合理的,class是保留字

    数据类型

    基本数据类型:numberstringbooleanundefinednull

    引用数据类型:object  数据存储在堆中,变量存储在栈中,变量通过引用路径找到对应的数据。引用类型进行复制,赋值时复制的是栈到堆的引用路径

    数据类型判断方法:

    a) 使用typeof判断数据类型,额外添加了function类型,所有判断结果如下:

    b) 使用instanceof判断数据实例:

    a instanceof b 判断a是否是b的实例或者子类,如果是,就返回true,不是就返回false

    var a = new Array();

    function fn (a , b) { };

    var b = new fn ( );

    console.log(a instanceof Array);   返回true

    console.log(a instanceof Object);   返回true,因为Array是Object的子类

    console.log(b instanceof fn);   返回true,因为b是fn构造函数的实例对象

    console.log(fn.arguments instanceof Array);   返回false,因为arguments是伪数组,不是一个真正意义上的数组

    c) 使用Object.prototype.toString.call(value)判断数据类型:

    1)判断基本类型:

    Object.prototype.toString.call(null); ------ [object Null]

    Object.prototype.toString.call(undefined); ------ [object Undefined]

    Object.prototype.toString.call(“abc”); ------ [object String]

    Object.prototype.toString.call(123); ------ [object Number]

    Object.prototype.toString.call(true); ------ [object Boolean]

    2)判断原生引用类型:

    函数类型

    function fn(){ }

    Object.prototype.toString.call(fn); ------ [object Function]

    日期类型

    var date = new Date();

    Object.prototype.toString.call(date); ------ [object Date]

    数组类型

    var arr = [1,2,3];

    Object.prototype.toString.call(arr); ------ [object Array]

    正则表达式

    var reg = /a/g;

    Object.prototype.toString.call(reg); ------ [object RegExp]

    原生JSON对象:

    Object.prototype.toString.call(JSON); ------ [object JSON]

    注意:Object.prototype.toString()本身是允许被修改的,这里讨论的前提都是假设toString()方法未被修改

    数值类型

    Js中计算机能表示的最大值Number.MAX_VALUE === 1.7976931348623157e+308

    Js中计算机能表示的最小值:Number.MIN_VALUE === 5e-324

    由于浮点数的存在,小数在运算中有时会出现丢失精度的情况:

        var a = 0.1;

        var b = 0.2;

    console.log(a + b);   输出结果为:0.30000000000000004 

    console.log(a + b === 0.3)  输出结果为:false

    所以在使用小数进行数值判断时,要注意这样的情况出现

    关于数值运算的基本方法:

    parseInt("123.45abc")  返回123,舍弃小数与非数字部分,如果字符串不是数字开头,返回NaN

    parseFloat("123.45abc") 返回123.45,舍弃非数字部分,如果字符串不是数字开头,返回NaN

    Math对象的基本方法:

    Math.ceil(1.4)   向上取整,有小数就整数部分加1,返回2

    Math.round(1.5)  四舍五入,返回2,如果是负数-1.5,则为-1,-1.55为-2

    Math.floor(1.4)  向下取整,返回1

    Math.random() 返回 0 ~ 1 之间的随机数

    Math.abs(x) 返回x的绝对值

    Math.max(x,y) 返回 x 和 y 中的最大值

    Math.min(x,y) 返回 x 和 y 中的最小值

    Math.PI  表示无理数π的数值

    Math.exp(x) 返回 e 的指数

    Math.log(x) 返回数的自然对数(底为e)

    Math.pow(x,y) 返回 x 的 y 次幂

    Math.sin(x) 返回x的正弦

    Math.cos(x) 返回x的余弦

    Math.tan(x) 返回x的正切

    Math.acos(x) 返回x的反余弦值

    Math.asin(x) 返回x的反正弦值

    Math.atan(x) 以介于 -PI/2 与 PI/2 弧度之间的数值来返回 x 的反正切值

    Math.atan2(y,x) 返回从 x 轴到点 (x,y) 的角度(介于 -PI/2 与 PI/2 弧度之间)

    Math.sqrt(x) 返回x的平方根

    Math.toSource() 代表对象的源代码

    Math.valueOf() 返回一个 Math 对象的原始值,不常用

    字符串类型、boolean类型

    字符串:(转义字符如: 表示字符串换行等)

    Boolean类型:表示没有意义的值转换成boolean值都是false,例如:空字符串””

    、数值0、NaN、null、和undefined;其他都是true,例如:”false”、”0”都是true

    数据类型转换

    转换成字符串:toString()String()+ “”或者加一个空字符串

    转换成数字:Number()只能转换”123456”纯数字字符串;parseInt()可以转换”123px”;parseFloat(),可以转换”123.123.123”;如果字符串中的内容是数字,那么只用在后面减0,就会转换成数值类型,例如:(”32”-0)为32,此处如果用+0则没有效果,只能-0

    运算符

    1)一元运算符(只有一个元素) :自加++、自减--、非!

    2)逻辑运算符 && || !

    短路操作(返回对当前表达式起决定作用的值):("”||”true”)返回:”true”

    3)运算符优先级,从高到底

    ( )括号优先级最高

      > 一元运算符:++、 -- 、!  

      > 算数运算符:先* 、/后+、-  

      > 关系运算符:>、>=、<、<=  

      > 相等运算符:== 、!=、===、!==  

      > 逻辑运算符先&&,后||

    流程控制语句

    1)选择语句

    a)  if ( ) { } else if ( ) { } else { }语句

    b)  三元运算符:a === 2 ? console.log(“等于”) : console.log(“不等于”);使用结果等同于if , else

    c)  switch case default语句   进行全等比较,只要全等就进入,没有break就一直执行,case里必须是具体的值,可以是返回值为boolean的表达式如:a > 3,但switch( true )中要传入boolean

        var a = 4

        switch (a) {

            case 3:

                console.log("a");

            case 4:    这里满足条件,执行进入

                console.log("b");

            case 5:                               代码执行结果: b , c

                console.log("c");

                break;

            default :console.log("default")

    }

    2)循环语句

    a)  for循环 for( var i=0 ; i < 20;i++ ) { break }

    b)  for in循环 for( var k in obj) { this[k]=obj[k]}  可以遍历对象的属性

    c)  while循环 while( i <= 10 ){ i++; }

    d)  do while循环 do { i++; } while( i <= 10 ) 先执行再判断,所以至少执行一次

    数组Array

    1)数组的声明

    构造函数声明:var arr = new Array( 1 , 2 , 3 )  声明了一个数组为[ 1 , 2 , 3 ]

    如果只传一个数值参数var arr = new Array( 3 )  表示声明的数组的长度为3

    字面量声明:var arr = [ 1 , 2 , 3 ]

    2)数组的索引:从0开始,[ ].length表示数组的长度

    对象Object

    1)对象的声明

    构造函数声明:var obj = new Object( ) 

    字面量声明:var obj = { name:”Tom” , age:20 , SayHello:function(){

         Console.log(“hello”)

    }}

  • 相关阅读:
    Codeforces 876C Classroom Watch:枚举
    Codeforces 876B Divisiblity of Differences:数学【任意两数之差为k的倍数】
    BZOJ 3943 [Usaco2015 Feb]SuperBull:最大生成树
    BZOJ 3391 [Usaco2004 Dec]Tree Cutting网络破坏:dfs【无根树 节点分枝子树大小】
    markdown常用数学符号小结
    BZOJ3211花神游历各国-线段树&树状数组-(HDU4027同类型)
    一维二维树状数组写法总结
    hdu4352-XHXJ's LIS状压DP+数位DP
    常用Git命令以及出现的状况ing
    bitset简单用法
  • 原文地址:https://www.cnblogs.com/Tabb/p/6431606.html
Copyright © 2020-2023  润新知