浏览器端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类型

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

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”)

}}

JavaScript (JS)基础:ECMAScript 浅析 (含Math基本方法解析)的更多相关文章

  1. JavaScript (JS) 面向对象编程 浅析 (含对象、函数原型链、闭包解析)

    1. 构造函数原型对象:prototype ① 构造函数独立创建对象,消耗性能 function Person(name) { this.name = name; this.sayHello = fu ...

  2. 03慕课网《进击Node.js基础(一)》API-URL网址解析

    url url.parse(url,query,host);解析域名 url必须,地址字符串 query可选 host 可选:在不清楚协议时正确解析 querystring 字符串和对象之间互相解析 ...

  3. JavaScript (JS)基础:BOM 浅析 (含window对象相关基本方法、属性解析)

    ① window对象(Math方法也属于window对象): window对象是JavaScript中的顶级对象,所有定义在全局作用域中的变量.函数都会变成window对象的属性和方法,window对 ...

  4. JavaScript (JS)基础:DOM 浅析 (含数组Array、字符串String基本方法解析)

    ①文本对象document: 例如:document.getElementById()    只获取一个对象          document.getElementsByTagName()   获取 ...

  5. js常用的数组,,字符串,,Math..正则方法

    数组 slice[start,end] 返回从原数组中指定开始下标到结束下标之间的项目组成新数组(不会影响原数组) splice() 1.删除功能:2个参数 , 起始位置 , 删除的项目 2.插入功能 ...

  6. JS基础语法---String对象下的方法(字符串的方法)

    实例方法---->必须要通过new的方式创建的对象(实例对象)来调用的方法 静态方法---->直接通过大写的构造函数的名字调用的方法(直接通过大写的对象名字调用的) 字符串的常用属性: . ...

  7. javaScript 将json字符串转换为json对象的方法解析

    JSON字符串: var str1 = '{ "name": "cxh", "sex": "man" }'; JSON对 ...

  8. js中的数组对象中的方法解析

    concat()方法:  合并两个数组,返回新对象的结果: join()方法 :  把数组内的所有元素加入到一个字符串中,传入的分隔符就是指定的分隔符 pop()方法: 删除数组并返回数组的最后一个元 ...

  9. 【转载】Javascript使用Math.floor方法向下取整

    在Javascript的数值运算中,很多时候需要对最后计算结果向下取整,Math.floor是javascript中对计算结果向下取整的函数,它总是将数值向下舍入为最接近的整数.此外Math.ceil ...

随机推荐

  1. Java实现随机出题,10道10以内加减法计算

    package com.swift; import java.awt.Toolkit; import java.util.Scanner; public class PlusQuiz { public ...

  2. ES6 Proxy拦截器详解

    Proxy 拦截器 如有错误,麻烦指正,共同学习 Proxy的原意是"拦截",可以理解为对目标对象的访问和操作之前进行一次拦截.提供了这种机制,所以可以对目标对象进行修改和过滤的操 ...

  3. CentOS7安装Nginx、MySQL、PHP

    之前才网上找了好多文章,但是配置总会出错,后来傻傻的发现官方文档都有的,当然配合网上文章说明更好,因此本文只说一个大概 安装PHP 官方配置 配置用户和用户组,需要有根目录权限 vim /usr/lo ...

  4. Olympic Class Ships【奥林匹克级邮轮】

    Olympic Class Ships You probably know about the Titanic, but it was actually just noe of three state ...

  5. vector函数用法

    vector是线性容器,它的元素严格的按照线性序列排序,和动态数组很相似,和数组一样,它的元素存储在一块连续的存储空间中,这也意味着我们不仅可以使用迭代器(iterator)访问元素,还可以使用指针的 ...

  6. itchat 动态注册

    动态注册时可以选择将itchat.run()放入另一线程或使用configured_reply()方法处理消息. 两种方法分别是: # 使用另一线程,但注意不要让程序运行终止 import threa ...

  7. 通过APP,网页打开手机客户端QQ

    以下内容为转载,原帖子 http://m.blog.csdn.net/blog/qduningning/40587099 在浏览器中可以通过JS代码打开QQ并弹出聊天界面,一般作为客服QQ使用.而在移 ...

  8. Python框架之Django学习笔记(十)

    又是一周周末,如约学习Django框架.在上一次,介绍了MVC开发模式以及Django自己的MVT开发模式,此次,就从数据处理层Model谈起. 数据库配置 首先,我们需要做些初始配置:我们需要告诉D ...

  9. 【BZOJ 3620】似乎在梦中见过的样子

    题目 (夢の中で逢った.ような--) 「Madoka,不要相信 QB!」伴随着 Homura 的失望地喊叫,Madoka 与 QB 签订了契约. 这是 Modoka 的一个噩梦,也同时是上个轮回中所发 ...

  10. Python+Selenium练习篇之5-利用partial link text定位元素

    本文介绍如何通过partial link text来定位页面元素.看到这个,有点和前一篇文字link text有点类似.字面意思,确实和link text相类似,partial link text就是 ...