ECMAScript5知识点总结
来源:互联网 发布:农村淘宝合伙人的未来 编辑:程序博客网 时间:2024/06/10 22:40
ES5的数据类型:
* 在ecmascript中函数即是对象,所以函数是属于对象数据类型。
undefined和null是特殊值,是用来描述“空值”。
console.log(typeof null); // object /*至于这里为何返回object:从逻辑角度看,null代表一个空对象指针,所以会返回object。不建议深入探究。*/ console.log(undefined == null); // true console.log(undefined === null); // false /*实际上,undefined值是派生自null且都用来描述'空值',所以对他们进行相等性测试的是true。但是恒等(===)测试时,他们的类型不同所以会返回false*/
NaN(not a number)
NaN是一个特殊的值,称为不是一个数字的Number类型。
conosle.log(NaN == NaN); // false // NaN和所有的值都不相等,包括自己。
字符串是不可变的
var lang = 'java'; lang = lang + 'script'; // 字符串一旦创建就不能改变。第二行改变了lang的值,但是其实是改变了lang对象指向的内存区域。 // 可以理解为第二行代码改变了lang变量的指向。如下图
字符串和数字比较
对于数字和字符串操作符来说,加号运算符和比较运算符的行为是有所不同的。
加号运算符更偏爱字符串,如果其中一个操作数是字符串的话,则进行字符串链接操作。
比较运算符则更偏爱数字,当且仅当两个操作数都是字符串的时候,才会进行字符串的比较。
console.log(1+3); // 加法 3 console.log(1+'3'); // 字符串连接 '13' 1转换为'1' console.log('1' + '3'); // 字符串连接 '13' console.log(3 > 11); // 数字的比较 fasle console.log(3 > '11'); // 数字的比较 '11'转换为11 false console.log('3' > '11'); // 字符串的比较 true
逻辑非运算符
var str = 'hello'; console.log(!str); // false console.log(!!str); // true var kongStr = ''; console.log(!kongStr); // true console.log(!!kongStr); // false // 使用一个!逻辑非运算符的时候,是将值转化为布尔值,在取反。 // 使用两个!!逻辑非运算符的时候,是将值转为化布尔值取法在取反,相当于进行Boolean()进行处理
流程控制语句
对于if语句括号里面的表达式,会自动隐式调用Boolean()方法进行判断,将表达式的值转换成布尔值。
if (条件表达式) { } else if(条件表达式) { } else { } // 在上述流程语句中,当条件表达式满足了其中一个条件的时候,便开始执行内部代码,而不会继续向下判断。详细见例子: var result = 77; // 第一种流程语句的写法结果为: 及格 if (result > 60) { alert('及格'); } else if(result > 70) { alert('中等'); } else if(result > 80) { alert('良好') } // 第二种流程语句的写法结果为: 中等 if (result > 80) { alert('良好'); } else if(result > 70) { alert('中等'); } else if(result > 60) { alert('及格') }
封装函数动态累加(参数个数可变)
function sum() { var result = 0; for (var i=0, len=arguments.length; i<len; i++) { sum += arguments[i]; } return result; }
*ES5中的函数是没有重载功能,重载:几个相同的函数名,但是参数不同的函数。
*在ES5中,如果函数名相同,在后面声明的函数会覆盖前面声明的函数。
数组常用方法
// 栈是一种数据后进先出的数据结构,栈方法: push()、pop() var arr = [3,7,9,11,5]; console.log(arr.push(8)); // 6 返回数组长度,原数组改变[3,7,9,11,5,8] console.log(arr.pop()); // 8 返回删除的元素 原数组为[3,7,9,11,5] // 队列方法,是一种先进先出的数据结构。 var arr = [3,7,9,11,5]; console.log(arr.shift()); // 3 返回删除的元素,原数组为[7, 9, 11, 5] console.log(arr.unshift(4)); // 5 返回数组长度,原数组为 [4, 7, 9, 11, 5]
sort()方法相关知识
// sort()方法的默认排序在数字排序上是存在问题的,其默认排序顺序是根据字符串Unicode码点 var arr = [10, 1, 0, 5, 15]; console.log(arr.sort()); // [0, 1, 10, 15, 5] // 根据需求,常见的从小到大排序,或者从大到小排序 function compare(value1, value2) { if (value1 < value2) { return -1; } else if(value1 > value2) { return 1; } else { return 0; } } var arr = [10, 1, 0, 5, 15]; console.log(arr.sort(compare)); // [0, 1, 5, 10, 15] // 如果需要从大到小排序 console.log(arr.sort(compare).reverse()); // [15, 10, 5, 1, 0]
数据内存存储
栈内存和堆内存
- 栈内存: 基本类型的值(同时也保存着对象的指针)
- 堆内存: 引用类型的值 => 对象
基本类型值: Undefined、Null、Boolean、Number、String类型值,占据固定的大小,存放在栈内存中,按值访问。
引用类性质: 对象。对象的大小是不固定的,因此保存在堆内存中。但引用的地址大小是固定的,因此保存在栈内存中。当查某引用类型的值时,先从栈中读取内存地址,通过内存地址找到堆中的值,称为按引用访问。注:引用类型的复制,是将引用的地址复制过去,指向同一个对象。
检测浏览器是否存在flash插件
function hasPlugin(name) { var name = name.toLowerCase(); for(var i = 0; i<navigator.plugins.length; i++) { if (navigator.plugins[i].name.toLowerCase().indexOf(name) > -1) { return true; } } } hasPlugin('flash');
获取节点
document.getElementsByTagName(); // 返回对象集合,不是数组 [object HTMLCollection] document.getElementsByClassName(); // [object HTMLCollection] document.getElementById(); // [object HTMLDIVElement] document.getElementsByName(); // [object NodeList] 比较少用
阅读全文
0 0
- ECMAScript5知识点总结
- ECMAscript5
- JavaScript ECMAScript5
- ##ECMAScript5补充
- ECMAScript5(ES5)
- ECMAscript5 手册
- 知识点总结:
- 知识点总结
- 知识点总结
- 知识点总结
- 知识点总结
- 知识点总结
- 知识点总结
- 知识点总结
- 知识点总结
- 知识点总结
- 知识点总结
- 知识点总结
- 报名 | 东南大学周张泉:基于知识图谱的推理技术
- 【第七周项目6】停车场模拟
- eclipse的.properties文件中文显示问题
- java编写任意两个日期相距的天数
- C深入const作用
- ECMAScript5知识点总结
- MPAndroidChart如何在Fragment中使用
- 网络基础之网络的网络
- Python logging 日志模块
- python+selenium+PhantomJS抓取ajax动态网页数据
- 机器学习正则化L0,L1,L2范数
- Leetcode 2. Add Two Numbers(链表求和)
- [ACM模板]ZKW MCMF费用流
- tar指令