js:语言精髓笔记1--标识符与基本类型
标识符:
- 命名:
- 语法以及类型----语法关键字 //逻辑
- 值(的存储位置)----变量和常量 //值
- 绑定://位置
- 语法关键字对位置的绑定----作用域限定
- 变量对位置的绑定---变量生存周期的限定
声明:约定变量的生存周期和作用域;
标识符语义关系:
- 与值相关:
- 类型
- 变量:
- 直接量
- 对象
- 与逻辑相关:
- 控制流程语句:
- 标签声明
- 一般流程控制语句 //break,continue,return
- 异常
- 控制流程语句:
- 与值和逻辑都相关:
- 表达式:
- 值运算
- 对象存取
- 逻辑语句:
- 顺序
- 分支
- 循环
- 表达式:
- 其他:
- 注释
JS引擎运行及响应错误:
- 1.语法分析(语法分析错误); //变量声明在语法分析阶段就处理,所以在执行的时候会有变量名提前的效果;
- 2执行(执行异常)
*js中函数多重含义包括:函数,方法,构造器,类以及函数对象等。
*由于不具备对象系统的全部特性,js通常称为基于对象而非面向对象的语言。
运算:(注意特殊值NAN)
- 一般表达式运算的结果总是直接量;
- 函数/方法调用的结果可以返回值或引用;
- 两个相同引用如果等值,那一定全等;
字符串转义序列:(\)
- 将无意义的字符串转化为有意义;
- 将有意义的符号转化为无意义;
注意:
字符:空字符串也可以用作对象成员名;
数值:当包括点字符“.”,字符e,E时,该直接量总会被标识为浮点数;(注意某些引擎会优化一直直接量的内部存储形式);
函数:在表达式中具名函数只识别为匿名函数而忽略函数名; -----(function foo(){})
js:语言精髓笔记1--标识符与基本类型的更多相关文章
- js:语言精髓笔记12--动态语言特性(2)
对于括号内: 通过赋值时发生的重写: (Object1 = function() {}).prototype.value = 100; var obj1 = new Object1; console. ...
- js:语言精髓笔记11--动态语言特性(1)
语言:程序最终被表达为数据(结构)和逻辑(算法),命令式和说明式/函数式语言分别从这两方面分类: 动态:在语言陈述时无法确定,必须在计算机执行时才能确定语言关系:JS是完全动态语言,导致其不确定性一般 ...
- js:语言精髓笔记10--闭包
闭包: //JS函数式风格中,在内部保存数据和对外无副作用这两个特性主要就是通过闭包实现的: 函数与闭包: 一个函数是一段静态代码,它是一个代码书写时已经编译期,静态概念:闭包是函数在代码运行过程中 ...
- js:语言精髓笔记9--函数式语言特征
形式化运算系统的研究: 图灵:提出图灵机形式系统,通过0,1运算系统来解决复杂问题: 冯诺依曼:提出了冯诺依曼体系:即通过修改内存反映运算结果: 阿隆左.丘奇:提出新的运算范型Lambda演算,计算机 ...
- js:语言精髓笔记8--对象系统
封装: 一把对象系统,封装是由语法解析来实现的,即语法作用域:但js是动态语言,因此只能依赖变量作用域: js的变量作用域只有表达式,函数,全局三种:所以js只能实现public和private两种封 ...
- js:语言精髓笔记7----原型继承
面向对象有三个基本特性:封装,继承,多态:如果都满足的话称为面向对象语言:而部分满足则称为基于对象语言: 数据类型实现模型描述: JavaScript对象模型: 构造过程:函数->构造器 构造器 ...
- js:语言精髓笔记5----语言分类
计算模型:源于对计算过程的不同认识: 1.基于不同计算模型一般分为://教科书的一般分类 命令式语言: 函数式语言: 逻辑式语言: 面向对象程序设计语言: 2.基于程序本质分类: //编程的经典法则 ...
- js:语言精髓笔记13--语言技巧
消除代码全局变量名占用: //本质是使用匿名函数: void function(x, y, z) { console.log(x + y + z); }(1,2,3); //要使函数内的变量不被释放, ...
- js:语言精髓笔记6----作用域
js基础语法:由语句.表达式和变量构成: 语句是主要表达方式:单语句->复合语句(代码块)->程序片段(函数):js中没有单元和程序的概念: 作用域: 语法作用域与变量作用域的区别:前 ...
随机推荐
- Linux内核之数据双链表
导读 Linux 内核中自己实现了双向链表,可以在 include/linux/list.h 找到定义.我们将会首先从双向链表数据结构开始介绍内核里的数据结构.为什么?因为它在内核里使用的很广泛,你只 ...
- svn报错 400 Bad Request
MyEclipse中的svn,commit经常报错 Error: Commit failed (details follow): Error: At least one property chang ...
- poj2568
Y2K Accounting Bug Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 11275 Accepted: 56 ...
- linux expect 简单讲解
来自http://blog.csdn.net/winstary/archive/2009/08/08/4422156.aspx使用expect实现自动登录的脚本,网上有很多,可是都没有一个明白的说明, ...
- 大数据之ETL设计详解
ETL是BI项目最重要的一个环节,通常情况下ETL会花掉整个项目的1/3的时间,ETL设计的好坏直接关接到BI项目的成败.ETL也是一个长期的过程,只有不断的发现问题并解决问题,才能使ETL运行效率更 ...
- Redis学习手册(Sorted-Sets数据类型)
一.概述: Sorted-Sets和Sets类型极为相似,它们都是字符串的集合,都不允许重复的成员出现在一个Set中.它们之间的主要差别是Sorted-Sets中的每一个成员都会有一个分数(score ...
- android 初探
2014年7月27日 15:02:57 附: android 官方培训课程中文版 //官方简单的入门教程, 每个大类中只介绍了几个知识点, 可以快速搭建一个hello world android 开发 ...
- mysql5.6 timestamp
1.timestamp 默认值 CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 在创建新记录和修改现有记录的时候都对这个数据列刷新 CURRENT_TIME ...
- BestCoder17 1001.Chessboard(hdu 5100) 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5100 题目意思:有一个 n * n 的棋盘,需要用 k * 1 的瓷砖去覆盖,问最大覆盖面积是多少. ...
- 【USACO】ariprog
输入 : N M 要找到长度为 N 的等差数列,要求数列中每个数字都可以表达成 a^2 + b^2 的和, 数字大小不超过M^2 + M^2 输出: 等差数列首元素 间隔 (多组答案分行输出) 解题 ...