zoukankan      html  css  js  c++  java
  • 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”)

    }}

  • 相关阅读:
    97. Interleaving String
    96. Unique Binary Search Trees
    95. Unique Binary Search Trees II
    94. Binary Tree Inorder Traversal
    odoo many2many字段 指定打开的form视图
    docker sentry 配置文件位置
    postgres 计算时差
    postgres 字符操作补位,字符切割
    postgres判断字符串是否为时间,数字
    odoo fields_view_get
  • 原文地址:https://www.cnblogs.com/Tabb/p/6431606.html
Copyright © 2011-2022 走看看