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. Gradle 翻译 tips and recipes 使用技巧 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  2. docker build 错误 /usr/share/dotnet/sdk/2.1.801/Microsoft.Common.CurrentVersion.targets(2106,5): warning MSB3245: Could not resolve this reference

    docker dotnet Restore 的时候报错, 一度怀疑是linux的dotnet core sdk没有装好, 卸了装, 装了卸, 试了好几遍还是无效(Microsoft.Common.Cu ...

  3. 用C#实现Rabbitmq应用的小实例

    RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件).RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的.所有主要 ...

  4. 【转载】C#中List集合使用Max()方法查找到最大值

    在C#的List集合操作中,有时候需要查找到List集合中的最大值,此时可以使用List集合的扩展方法Max方法,Max方法有2种形式,一种是不带任何参数的形式,适用于一些值类型变量的List集合,另 ...

  5. jquery实现弹出层完美居中效果

    代码如下: showDiv($("#pop"));function showDiv(obj){ $(obj).show(); center(obj); $(window).scro ...

  6. procfs、debugfs

    procfs 是进程文件系统(file system) 的缩写,包含一个伪文件系统,用于通过内核访问进程信息 这个文件系统通常被挂载到 /proc 目录.由于 /proc 不是一个真正的文件系统,它也 ...

  7. scrapy 爬虫中间件 httperror中间件

    源码 class HttpErrorMiddleware(object): @classmethod def from_crawler(cls, crawler): return cls(crawle ...

  8. Pycharm中连接数据库乱码问题解决

    当我们使用pycharm建立数据库之后,看到里面的数据都是乱码,就像下面一样: 其实这个并不是pycharm的显示问题,而是建立数据库时产生的. 解决方法是到指定字符集的命令提示符中重新建表并指定字符 ...

  9. 谈谈OAuth1,OAuth2异同

    ##一.写在前面在收集资料时,我查询和学习了许多介绍OAuth的文章,这些文章有好有坏,但大多是从个例出发.因此我想从官方文档出发,结合在stackoverflow上的一些讨论,一并整理一下.整理的内 ...

  10. SVN无法检出项目

    情况说明: SVN的管理员给我一个项目的检出权限,我用浏览器可以访问,TortoiseSVN无法检出,提示没有访问URL的权限,不能检出. SVN管理员交流别人可以使用,我用同事的电脑,使用我的账号检 ...