JavaScript 基本概念

1.区分大小写,变量名test与Test 是两个不同的变量,且函数命名不能使用关键字/保留字, 变量命名规范: 开头字符必须是字母,下划线,或者美元符号,ECMAScript采用第一个字母小写其余单词首字母大写,并非强制要求.

2.注释 // 单行注释 /**/ 多行注释  为提高可读性 /**  这是注释 **/ 多用于企业应用

3.严格模式 H5版本新增概念 在严格模式下 ECMA3中一些不确定行为将会得到处理 支持严格模式浏览器:IE 10+ Firefox 4+ Safari 5.1+ Opera 12+ 和 Chrome

4.语句以分号结尾, 不写不报错 为了增加可读性和执行度 代码块以{开头}结尾 便于识别

5.H5新增关键字 debugger  新增保留字:let 和 yield

6.ECMAScript 的变量是松散类型可以保存任何类型的数据,或者说就是个占位符,可以再赋值同时修改值类型,但不推荐,变量有效期会随着父级函数消失而消失,如果不增加var 操作符就会被默认创建全部变量,而不是局部函数内变量名.也不推荐这种方式.

数据类型

7.5种简单数据类型 Undefined Boolean Number Null Object ,返回数据类型typeof ,它是操作符!! 所以不加括号也可以!! typeof null 部分浏览器返回不一样 有的是Object有的是function

8.Undefined类型只有一个值undefined 而且所有变量初始化默认赋值就是undefined

9.Boolean类型只有两个值 true和false True与False 只是标识符 并不是类型  ECMA区分大小写,部分数值转化boolean 详见26页 ,并且boolean类型在判断作用时会转换当前判断数据比如字符串等等

var message="hello world";
//这里判断时 message呗转换了 所以会执行下面语句
if(message){
alert("true");
}

10.Number 类型会区分进制,例如E3标准中 var num =070; E3中获得数值是8进制56 而在E5标准中修改为10进制的70,浮点数值前置0与小数点后置0都会被默认去掉比如10.0 因为浮点数值需要的存储空间要比整数占用空间大很多,多位浮点数据可以用e表示比如1.3e2; 相当于1.3X10的2次方,另外尽量不要使用小数点做计算:

var a=0.1,
b=0.2; //想知道结果就试试看
if(a+b==0.3){
alert("yes?");
} //显然里面的yes? 没有执行 因为0.1+0.2 在程序执行中并不是等于0.3而是0.30000000000000004,而当0.15与0.15 相加的时候就是0.3 这说明一点永远不要测试某个特定的浮点数值

11.数值范围 最大值与最小值 存储在Number.MAX_VALUE与Number.MIN_VALUE中 如果数值超过最大值或最小值就会用Infinity表示,最大值是正数 最小值当然是-Infinity了,所以就会出现另外一方法来验证当前数值是否在最大值与最小值之间 isFinite(),若数值在其中就会返回true  若不在返回false,日常中这个函数用到的地方当然不是很多,但是必须知道该函数的作用.

12.NaN 即非数值,一个很有意思的特殊数值,主要用于预计返回数值的操作却未返回数值,并且NaN与任何值都不想等,任何涉及NaN的操作都会返回NaN,针对这俩特点ECMA设计一个方法专门去验证它isNaN(),与其他验证方法一样任何不能被转换为数值的值都会返回true.

13.数据转换,除了true/false和undefined 这些特殊转换外正常数值转换规则也是不太一样的比如praseInt("123abc"),他会忽略后面的abc返回前面的123,而praseInt("0011");会返回11忽略前面的00,这里需要着重注意一下进制规则:

//E3规则中该方法会返回8进制数值56而当E5规则中会返回10进制数值70
var num=parseInt("070");
//E5规则中默认转换10进制,并增加了返回进制制度,如果不写后面的16进制 它会直接返回0,而写上16进制之后结果为10
var num1=parseInt("0xA",16);

14.string类型,单引号与双引号区别不大但是不能混合使用,某些字符串字符会被转义成另外的命令而不是统一的字符串,详情见P33 ,字符串特点例如使用+拼接字符串时:

var lang="Java";
//拼接字符串,最后lang的值是JavaScript
//创建过程 首先原来的lang 变量值呗销毁了 重新创建javascript变量再重新填充到lang变量中
lang=lang+"Script";

15.toString()方法指定末尾转换进制,返回结果很不相同,如果是null或者undefined则返回"null"和"undefined";

16.Object类型 无参数情况下创建对象 new object() 后面括号可以省略

17.一元操作符:递增与递减符号在前与在后区分 先自增/自检  在做运算还是先运算  再进行自增自检

18.一元加减操作符,+相当于正数而 - 代表转换成负数结果不一样 布尔格式数值先准换为数字0 或者1在进行计算,字符串类型直接nan位操作符

位操作符

  19.ECMAScript中数值存储方式都是IEEE-754  64位格式储存 而操作符先将64转32位在进行操作于是有以下规则:

1.32位存储方式 前31位代表数值,第32位代表数值符号(比如负号)

2.二进制存储格式每一位都是2的幂,没有用到的用0代替

var num=-18;
//求-18的二进制码
alert(num.toString(2));//"-10010"

按为非:个人理解 相当于二进制排列中 吧当前数字所有0用1去替代 1用0去替代 符号位不变 最后得到按位非 数值

按位与:两个数值二进制状态排列两个数值对应位都是1的时候才会返回1 任何一位是0结果都是0 最后形成的二进制码 数值就是按位与结果值

按位或:与按位与方式排列 只是规则不同 相同数位下 如果有一位为1那么就返回1,两位都是0的情况下才会返回0

按位异或:与按位与方式排列,只是规则不同 相同数位下只有一位是1那么取值1若两位都是1或0 取值0

左移:就是当前二进制位置向左移动,空余位置由0替补 注意移动之后符号不会被移动

有符号的右移:保留符号位移动,空余位置用0补充

无符号右移:其中正数右移与原数据移动结果相同,主要是负数右移会把二进制码当成正数二进制码进行右移所以结果相差很大

布尔操作符

20.逻辑非:首先把参数转换成布尔值 之后再求反,比如空字符 NaN等 逻辑非之后得到的就是true

21.逻辑与:二者其中一个为false那么返回值就是false,而且逻辑与属于断路操作符 如果第一个参数返回false第二个参数就不会被执行直接返回

22.逻辑或:例如逻辑与逻辑或也是断路操作符,拿到对应结果之后后面不会被再次执行注意:

这就是为什么很多js声明变量中会采用  var a=a||{}; 这种方式

JavaScript高级程序编程(二)的更多相关文章

  1. JavaScript高级程序编程(一)

    第一章 JavaScript简史  20170510 JavaScript 组成部分: 核心(ECMAScript)  文档对象模型(DOM)浏览器对象模型(BOM) Netscape Navigat ...

  2. JavaScript高级程序编程(四)

    2017.7.12  北京 数伏第一天 本日总结: 1.线上服务器时常显示.woff文件丢失解决办法 (IIS服务器) 添加MIME类型 添加三条: 文件扩展名      MIME类型 .svg    ...

  3. JavaScript高级程序编程(三)

    2017-06-24 更新 北京连续三天下雨啦 乘性操作符   1.ECMA中定义了三种操作符,乘法 除法 和求模 并与其他语言相应操作符相同,再计算之前如果不是数值,会先去调用number()方法转 ...

  4. javascript 高级程序设计 十二

    1.组合使用原型模式和构造函数模式: 由于原型模式创建对象也有它的局限性------有智慧的人就把原型模式和构造函数模式进行了组合. function Person(name, age, job){/ ...

  5. JavaScript高级程序设计学习(二)之基本概念

    任何语言的核心都必然会描述这门语言基本的工作原理.而描述的内容通常都要涉及这门语 言的语法.操作符.数据类型.内置功能等用于构建复杂解决方案的基本概念.如前所述, ECMA-262通过叫做 ECMAS ...

  6. JavaScript高级 引用类型(二)《JavaScript高级程序设计(第三版)》

    五.Function类型 是JS中最重要的一种引用类型 构造方式:(三种) 函数声明: 函数表达式定义: 函数构造器: 没有重载: 如果有两个相同函数名的函数,执行时,执行最近被定义的一次. 函数声明 ...

  7. JavaScript高级程序开发3笔记

      Js对象 注意:js基本数据类型不是对象,但是"abc".match()这种,可以调用对象的方法,是因为调用方法是临时产生了一个wrapper的包装对象,this指向它: Js ...

  8. javascript高级程序语言学习笔记

    1.加法操作符(+)的用法 第一种情况,如果两个操作符都是数值,执行常规的加法计算. 第二种情况,如果两个操作数都是字符串,则将第二个操作数与第一个操作数拼接起来. 第三种情况,只有一个操作数是字符串 ...

  9. javascript 高级程序设计(二)-在html中使用javascript

    <script> async 可选 charset 可选 defer 可选 language 已废弃 src 可选 type 可选

随机推荐

  1. C# vb .net实现焦距柔化特效滤镜

    在.net中,如何简单快捷地实现Photoshop滤镜组中的焦距柔化效果呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第 ...

  2. js 数据类型检测

    提起数据类型检测  大多数人首先想起的应该是  typeof 'xxx' == '数据类型' 坦然这种方法对于基本数据类型的检测还是非常方便的,但是当遇到引用数据类型 Object时却爱莫能助,下面就 ...

  3. 京信通信成功打造自动化工厂(MES应用案例)

    企业介绍: 京信通信成立于1997年,是一家集研发.生产.销售及服务于一体的移动通信外围设备专业厂商,致力于为客户提供无线覆盖和传输的整体解决方案,于2003年在香港联交所主板上市(2342.HK), ...

  4. OC中并发编程的相关API和面临的挑战

    OC中并发编程的相关API和面临的挑战(1) 小引 http://www.objc.io/站点主要以杂志的形式,深入挖掘在OC中的最佳编程实践和高级技术,每个月探讨一个主题,每个主题都会有几篇相关的文 ...

  5. Python爬虫系列:五、正则表达式

    1.了解正则表达式 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑. 正则表达式 ...

  6. MySQL Disk--MySQL磁盘问题排查

    存储问题排查 1.检测磁盘空间使用率 df -lh 注意系统目录的可用空间 2.检查磁盘inode使用 df -i 参考:https://www.cnblogs.com/gaogao67/p/1088 ...

  7. 从linux进程角度看JVM内存模型

    普通进程栈区,在JVM一般仅仅用做线程栈,如下图所示 首先是永久代.永久代本质上是Java程序的代码区和数据区.Java程序中类(class),会被加载到整个区域的不同数据结构中去,包括常量池.域.方 ...

  8. 命令启用Windows7 .NetFramework 3.5

    最近在测试某系统安装包在各个环境下的安装使用情况,在window7 下使用时,安装完成iis后,发现.Net Framework 3.5 没有自动勾选:命令没有执行成功. 通过以下命令可以在windo ...

  9. python的推导式 —— 列表推导式、集合和字典推导式

    python的推导式是用于快速处理数据的方法. 主要有:列表推导式.集合推导式和字典推导式 import time import numpy as np 列表推导式: 1. 速度快 t1 = time ...

  10. 日常工具集和技巧分享(Linux向)

    好用的软件/终端 命令别名 ip切换 imgcat 终端查看图片 autojump 目录快捷跳转 titan 密码记录工具 tldr man 的简单版,在线查询linux命令示例 ssh 别名/免密码 ...