JavaScript 使用 Unicode 字符集。
JavaScript 中的所有数据都是以 64 位浮点型数据(float) 来存储。所有的编程语言,包括 JavaScript,对浮点型数据的精确度都很难确定。
1、JavaScript数据类型
5种数据类型:
- string
- number
- boolean
- object
- function
3中对象类型:
- Object
- Date
- Array
2个不包含任何值的数据类型
- null
- undefined
值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol(Symbol 是 ES6 引入了一种新的原始数据类型,表示独一无二的值。)。
引用数据类型:对象(Object)、数组(Array)、函数(Function)。
2、undefined,nulll,NaN
- null用于对象,undefined用于变量、属性和方法
- 对象只有被定义才是null,否则是undefined
- NaN的数据类型是number,null的数据类型是object,未定义变量的数据类型是undefined
- 未使用值来声明的变量(声明无值的变量),其值实际上是 undefined。
- 任何变量都可以通过设置值为 undefined 来清空。 类型为 undefined.
- null 和 undefined 的值相等,但类型不等:
typeof undefined // undefined
typeof null // object
null === undefined // false
null == undefined // true
- 对象只有被定义才有可能为 null,否则为 undefined。
检测对象是否存在:
if(typeof myObj!==undefinded && myObj!==null)
3、typeof 、constructor
typeof
检测变量的数据类型。返回值是字符串。只能返回基础数据类型:string,number,Boolean,undefined,function,object。
- NaN 的数据类型是 number
- 数组(Array)的数据类型是 object
- 日期(Date)的数据类型为 object
- null 的数据类型是 object
- 未定义变量的数据类型为 undefined
**constructor **
constructor 属性返回所有 JavaScript 变量的构造函数。
4、全局变量,局部变量
变量用于存储数据值。变量是一个名称。
在函数外声明的变量是全局变量,网页上的所有脚本和函数都能访问它。全局变量会在页面关闭后被删除。
在 JavaScript 函数内部声明的变量(使用 var)是局部变量,所以只能在函数内部访问它。(该变量的作用域是局部的)。您可以在不同的函数中使用名称相同的局部变量,因为只有声明过该变量的函数才能识别出该变量。
只要函数运行完毕,本地变量就会被删除。
- 变量必须以字母开头
- 变量也能以 $ 和 _ 符号开头(不过我们不推荐这么做)
- 变量名称对大小写敏感(y 和 Y 是不同的变量)
变量生命周期:
JavaScript 变量的生命期从它们被声明的时间开始。
局部变量会在函数运行以后被删除。
全局变量会在页面关闭后被删除。
5、JavaScript 显示数据
JavaScript 可以通过不同的方式来输出数据:
- 使用 window.alert() 弹出警告框。
- 使用 document.write() 方法将内容写到 HTML 文档中。
- 使用 innerHTML 写入到 HTML 元素。
- 使用 console.log() 写入到浏览器的控制台。
6、字面量
在编程语言中,一般固定值称为字面量。
- 数字(Number)字面量
- 字符串(String)字面量
- 表达式字面量
- 数组(Array)字面量
- 对象(Object)字面量
- 函数(Function)字面量
变量用于存储数据值。变量是一个名称。字面量是一个值。
7、== 和 ===
- === 绝对等于(值和类型均相等),==比较值相等即可;
- !== 不绝对等于(值和类型有一个不相等,或两个都不相等)
- switch中使用的是绝对等于(===)来做判断的
switch 语句会使用恒等计算符(===)进行比较:
var x = 10;
switch(x) {
case "10": alert("Hello");//不会会执行这段代码
}
//---------
var x = 10;
switch(x) {
case 10: alert("Hello");//会执行这段代码
}
8、不同类型的循环
- for - 循环代码块一定的次数
- for/in - 循环遍历对象的属性
- while - 当指定的条件为 true 时循环指定的代码块
- do/while - 同样当指定的条件为 true 时循环指定的代码块
9、break,continue,return
break 语句用于跳出循环。break 语句跳出循环后,会继续执行该循环之后的代码(如果有的话)
continue 用于跳过循环中的一个迭代。continue 语句中断循环中的迭代,如果出现了指定的条件,然后继续循环中的下一个迭代。
return用于返回, 在代码块最后一行。JavaScript 默认是在代码的最后一行自动结束。
function myFunction(a) {
var
power = 10;
return a * power;
}
//---------------
function myFunction(a) {
var
power = 10;
return //等价于return;
a * power;
}
//返回undefined
JavaScript 变量提升
变量提升:函数声明和变量声明总是会被解释器悄悄地被"提升"到方法体的最顶部。
JavaScript 初始化不会提升:
var x = 5; // 初始化 x
var y = 7; // 初始化 y
elem = document.getElementById("demo"); // 查找元素
elem.innerHTML = x + " " + y; // 显示 x 和 y
//-----------------------
var x = 5; // 初始化 x
elem = document.getElementById("demo"); // 查找元素
elem.innerHTML = x + " " + y; // 显示 x 和 y yundefined
var y = 7; // 初始化 y
// y 输出了 undefined,这是因为变量声明 (var y) 提升了,但是初始化(y = 7) 并不会提升,所以 y 变量是一个未定义的变量。
严格模式
待补充。。。
this
待补充。。。
JavaScript Json
使用 JavaScript 内置函数 JSON.parse() 将字符串转换为 JavaScript 对象
JSON.stringify()将JavaScript值转换为Json字符串
void(0)
void(0) 计算为 0
href="#"与href="javascript:void(0)"的区别:
#:包含了一个位置信息,默认的锚是#top 也就是网页的上端。
而javascript:void(0), 仅仅表示一个死链接。
在页面很长的时候会使用 # 来定位页面的具体位置,格式为:# + id。
如果你要定义一个死链接请使用 javascript:void(0) 。
代码规范
- 变量名推荐使用驼峰法来命名(camelCase):
- 通常运算符 ( = + - * / ) 前后需要添加空格:
- 通常使用 4 个空格符号来缩进代码块,不推荐使用 TAB 键来缩进,因为不同编辑器 TAB 键的解析不一样。
- 简单预计:一条语句通常以分号作为结束符。
- 复杂语句的通用规则:将左花括号放在第一行的结尾。左花括号前添加一空格。将右花括号独立放在一行。不要以分号结束一个复杂的声明。
- 对象定义的规则:将左花括号与类名放在同一行。冒号与属性值间有个空格。字符串使用双引号,数字不需要。最后一个属性-值对后面不要添加逗号。将右花括号独立放在一行,并以分号作为结束符号。
- 每行代码字符小于 80,便于阅读,可以适量增减。
- 命名规则:全局变量为大写 (UPPERCASE );常量 (如 PI) 为大写 (UPPERCASE );变量和函数为小驼峰法标识, 即除第一个单词之外,其他单词首字母大写( lowerCamelCase)
- 使用小写文件名:大多 Web 服务器 (Apache, Unix) 对大小写敏感: london.jpg 不能通过 London.jpg 访问。其他 Web 服务器 (Microsoft, IIS) 对大小写不敏感: london.jpg 可以通过 London.jpg 或 london.jpg 访问。必须保持统一的风格,建议统一使用小写的文件名。
闭包
JavaScript 变量可以是局部变量或全局变量。私有变量可以用到闭包。
闭包是可访问上一层函数作用域里变量的函数,即便上一层函数已经关闭。
未完待续。。。。。。