[js] 变量 操作符 对象
来源:互联网 发布:浙江软件考试成绩查询 编辑:程序博客网 时间:2024/05/20 03:07
关键字和保留字
数据类型
基本数据类型: Undefined, Null, Boolean, Number, String
复杂数据类型: Object(由一组无须名值对组成)
基本数据类型是按值访问的(保存在栈内存中),引用类型的值是保存在堆内存中的对象。js不允许直接访问内存位置,因此在操作对象时实际操作的是对象的引用而非对象本身
在为对象添加属性时操作的是对象本身(或者说会通过引用访问到对象)
可以使用typeof来判断
var a; typeof a; // undefinedvar b = null; typeof b; // objectvar c = 'abc'; typeof c; // stringvar d = true; typeof d; // booleanvar e = 123; typeof e; // numbervar f = {}; typeof f; // object
undefined派生自null,因此null == undefined
Number
浮点数使用IEEE754,因此计算精度不如整数
0.1 + 0.2 // 0.300000000000000040.1 + 0.2 == 0.3 // false
无穷大(Infinity)和无穷小(-Infinity)无法参与运算
Number.NEGATIVE_INFINITY // -InfinityNumber.POSITIVE_INFINITY // Infinity// 可以用isFinite判断是否是有穷数,是则返回trueisFinite(0) // trueisFinite(2e308) // false
NaN(Not a Number)表示一个本来要返回数值但却未返回数值的情况
- 涉及NaN的任何操作都返回NaN
- NaN与包括本身在内的任何数值都不相等
- isNaN函数可用于判断,isNaN本身会做转换
1/0 // Infinity-1/0 // -Infinity0/0 // NaNNaN*10 // NaNNaN == NaN // falseisNaN(NaN) // trueisNaN('10') // falseisNaN('re') // true
String
Object
Object类型是所有它的实例的基础
通过对象字面量定义对象不会调用Object构造函数
// 会修改全局Object函数,慎用Object = function() { console.log('wulala');}var a = new Object(); // wulalaVar b = {} //
Array
如果设置索引超过数组长度,数组会自动增加到该索引加1的长度
数组的length属性可以修改,修改后新项为undefined
判断可使用Array.isArray()方法
sort方法
sort默认是对字符进行排序 15<5
- 可传入一个函数方法作为比较方法
function compare(val1, val2) { if(val1.num < val2.num) { return 1; // 交换 } else if (val1.num > val2.num) { return -1; // 不交换 } else { return 0; // 不交换 }}var arr = [{num:3}, {num:2}, {num:3}, {num:0}, {num:9}];arr.sort(compare);arr; // [{num:9}, {num:3}, {num:3}, {num:2}, {num:0}]
concat, slice
两者都不会影响原来的数组而回返回一个新数组
两者都是浅复制
var a = [1, 2, 3];var b = [5, 'a'];a.concat('sdf', b, b); // [1, 2, 3, "sdf", 5, "a", 5, "a"]a; // [1, 2, 3]a.slice(1) // [2, 3]a.slice(1, 2) // [2]a.slice(-2, -1) // [2] 会加上数组长度a.slice(2, 1) // []
splice
三个参数代表起始位置,删除项数(可为0),插入项
var a = [1, 2, 3];a.splice(0, 1); // [1]a; // [2, 3]a.splice(0, 0, 'a', 'd'); // []a; // ['a', 'd', 2, 3]a.splice(2, 2, ['b', 'c']) // [2, 3]a; // ['a', 'd', ['b', 'c']]
Function
RegExp
基本包装类型
Boolean, Number, String
在读取基本类型时后台会创建一个对应的基本包装类型的对象,调用方法是的步骤为:
1. 创建一个实例;
2. 在实例上调用方法;
3. 销毁实例。
使用new调用构造函数和调用转型函数结果不同
var a = 123;var b = false;var num = Number(a);var obj = new Number(a);var boo = Boolean(b);var objB = new Boolean(b);typeof num // numbertypeof obj // objectboo || false // falseobjB && true // true
单体内置对象
无需显示实例化
Global
Math
类型转换
转换为Boolean类型
String 非空字符 true '' falseNumber 非零数 true 0,NaN falseObject 除null true null falseUndefined undefined false
转换为Number类型
- 使用Number转化任意类型
String 只包含数字 转换为十进制 包含浮点格式 转换为浮点 包含十六进制 转换为对应十进制 空 转换为0 其他 转换为NaNBoolean true 1 false 0Null 0Undefined NaNObject 调用valueOf方法,若结果为NaN,调用toString方法(测试发现无效仍然为NaN)
var a = '123.4';var b = '0x1b';var c = null;var d;var e = {};e.valueOf = function () { return NaN; }e.toString = function () { return '12'; }Number(a); // 123.4Number(b); // 27Number(c); // 0Number(d); // NaNNumber(e); // NaN
- 使用parseInt转化字符串
由于标准不同,建议带上第二个参数制定转换进制
var num = parseInt('AF', 16) // 175
- 使用parseFloat转化字符串
转化为string类型
- toString
null与undefined没有toString方法
数字的toString可以带进制参数
// professional js for web developers p34var num = 10;num.toString(); // 10num.toString(2); // 1010num.toString(16); // a
- String方法转化
调用toString方法
如果为null,返回null
如果为undefined,返回undefined
操作符
var aa;var bb = null;aa + bb // NaNaa + aa // NaNbb + bb // 0
语句
with 设置代码作用域
严格模式下不能使用,且会导致性能下降(延长作用域)
var a = obj.func1();var b = obj.func2();with(obj) { a = func1(); b = func2();}
- [js] 变量 操作符 对象
- js变量、数组、对象
- JS数据类型 变量 对象
- js 变量 对象 json
- js 对象 key 变量
- JS的变量和操作符
- js学习之变量对象
- js中的对象、数组、变量
- js 对象属性名为变量
- js中new操作符创建对象
- js对象原型与in操作符
- js 操作浏览器对象
- JS操作iframe 对象
- js对象属性操作
- js对象的操作
- js操作dom对象
- JS操作JSON对象
- Js {} 对象操作
- Linux 中“一切都是文件”概念和相应的文件类型
- BZOJ1598: [Usaco2008 Mar]牛跑步 次短路裸题
- android library projects cannot be launched 报错原因!
- ImageView的ScaleType详解
- 3.4 C++四种继承关系中内存分布
- [js] 变量 操作符 对象
- Hive的使用之脚本文件
- Android 接收短信
- 文章标题
- ROS实战之IDE的配置
- MySQL-API接口大全
- 文件上传 ,java.lang.IllegalStateException: File has been moved - cannot be read again org.springframewor
- Unity3D - Unity游戏Mono内存管理与泄漏
- Keyguard显示流程介绍