浏览器端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. tomcat的启动和部署

    方法/步骤 1 一.安装JDK和Tomcat 1,安装JDK:直接运行jdk-7-windows-i586.exe可执行程序,默认安装即可. 备注:路径可以其他盘符,不建议路径包含中文名及特殊符号. ...

  2. java基础必备单词讲解 day one

    computer 电脑 computer path 路径 配置jdk环境 class 类 classpath 类路径 编译好的文件执行路径 public 公共的 private 私有的 static ...

  3. 白鹭引擎eui控件的简单创建和管理方法

    一.创建ui文件: 1. 创建exml文件,改成group类型,拖入default.res.json文件里面,文件类型改成text. 2. 将创建的exml文件拖入控件,控件可以在属性面板命名. 3. ...

  4. HDU-3366-Count the string(KMP,DP)

    Count the string Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tot ...

  5. CMDB(资产管理系统) day1

    运维自动化最重要的就是标准化一切 自动化运维则支持以下功能: 1.OS的选择统一化,同一个项目使用同样的OS系统部署其所需要的各类软件.2.软件安装标准化,例如JAVA虚拟机,php,nginx,my ...

  6. psutil模块的基础使用

    注:Python并没有自带psutil模块,需要自己去安装 安装psutil模块 pip install psutilorpip3 install psutil 一.导入模块 import psuti ...

  7. A1065 A+B and C (64bit) (20)(20 分)

    A1065 A+B and C (64bit) (20)(20 分) Given three integers A, B and C in [-2^63^, 2^63^], you are suppo ...

  8. Java基础知识回顾(一):字符串小结

    Java的基础知识回顾之字符串 一.引言 很多人喜欢在前面加入赘述,事实上去技术网站找相关的内容的一般都应当已经对相应知识有一定了解,因此我不再过多赘述字符串到底是什么东西,在官网中已经写得很明确了, ...

  9. jni 调用

    Event 0 on null Unexpected event 0 on /storage/emulated/0/Books/null

  10. leetcode 【 Unique Paths II 】 python 实现

    题目: Follow up for "Unique Paths": Now consider if some obstacles are added to the grids. H ...