JavaScript学习笔记(java不同之处)
来源:互联网 发布:python 手写识别 编辑:程序博客网 时间:2024/05/29 19:26
一.比较运算符:
1.JavaScript允许对任意数据类型做比较:
false == 0; // true false === 0; // false
JavaScript在设计时,有两种比较运算符:
第一种是==
比较,它会自动转换数据类型再比较,很多时候,会得到非常诡异的结果;
第二种是===
比较,它不会自动转换数据类型,如果数据类型不一致,返回false
,如果一致,再比较。
由于JavaScript这个设计缺陷,不要使用==
比较,始终坚持使用===
比较。2.另一个例外是NaN
这个特殊的Number与所有其他值都不相等,包括它自己:NaN === NaN; // false
唯一能判断NaN
的方法是通过isNaN()
函数:isNaN(NaN); // true
3.浮点数的比较:要比较浮点数是否相等,只能计算它们之差的绝对值,看是否小于某个發值Math.abs(1 / 3 - (1 - 2 / 3)) < 0.0000001; // true
二、null和undefined :undefined表示未定义,仅仅在判断函数参数是否传递的情况下有用三、变量一般用var来申明,但在设计之初的时候允许不加var,但一个变量如果没有通过var申明就被使用,那 么该变量就自动被申明为全局变量为了改变这个设计缺陷,ECMA推出了strict模式,即在代码第一行写上 ' use strict ';强制通过var申明变量四、多行字符串(注意使用的是 笔记本数字1左边的按键)由于多行字符串用\n来换行比较费事,所以ES6退出用 `...`来表示五、模板字符串(注意使用的是 笔记本数字1左边的按键)要把多个字符串连接起来,可以用+号连接,但如果特别多变量就很麻烦。ES6新增了一种模板字符串var name = '小明';
var age = 20;
var message = `你好, ${name}, 你今年${age}岁了!`;
alert(message);
六、操作字符串:字符串具有索引,可以根据索引获得字符,但需要注意的是,字符串是不可变的,如果对字符串某个索引赋值,不会错但也没有效果七、操作数组:JavaScript的数组与java不同,如果给Array的length值赋新值会导致Array的长度发生变化请注意,如果通过索引赋值时,索引超过了范围,同样会引起Array大小的变化:var arr = [1, 2, 3];
arr[5] = 'x';
arr; // arr变为[1, 2, 3, undefined, undefined, 'x']
数组的slice方法就是对应String的substring()版本,它截取Array的部分元素,然后返回一个新的Array:var arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G'];
arr.slice(0, 3); // 从索引0开始,到索引3结束,但不包括索引3: ['A', 'B', 'C']
arr.slice(3); // 从索引3开始到结束: ['D', 'E', 'F', 'G']
注意到slice()
的起止参数包括开始索引,不包括结束索引。如果不给
slice()
传递任何参数,它就会从头到尾截取所有元素。利用这一点,我们可以很容易地复制一个Array
:var arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G'];
var aCopy = arr.slice();
aCopy; // ['A', 'B', 'C', 'D', 'E', 'F', 'G']
aCopy === arr; // false
数组的push和pop方法,push()方法向Array的末尾添加若干元素,pop()则把Array的最后一个元素删除var arr = [1, 2];
arr.push('A', 'B'); // 返回Array新的长度: 4
arr; // [1, 2, 'A', 'B']
arr.pop(); // pop()返回'B'
arr; // [1, 2, 'A']
arr.pop(); arr.pop(); arr.pop(); // 连续pop 3次
arr; // []
arr.pop(); // 空数组继续pop不会报错,而是返回undefined
arr; // []
unshift和shift: unshift()向Array的头部添加若干元素,shift()将Array的第一个元素删掉;var arr = [1, 2];
arr.unshift('A', 'B'); // 返回Array新的长度: 4
arr; // ['A', 'B', 1, 2]
arr.shift(); // 'A'
arr; // ['B', 1, 2]
arr.shift(); arr.shift(); arr.shift(); // 连续shift 3次
arr; // []
arr.shift(); // 空数组继续shift不会报错,而是返回undefined
arr; // []
splice()方法是修改Array的万能方法,它可以从指定的索引位置删除若干元素,然后再从该位置添加若干元素var arr = ['Microsoft', 'Apple', 'Yahoo', 'AOL', 'Excite', 'Oracle'];
// 从索引2开始删除3个元素,然后再添加两个元素:
arr.splice(2, 3, 'Google', 'Facebook'); // 删除的元素为 ['Yahoo', 'AOL', 'Excite']
arr; // ['Microsoft', 'Apple', 'Google', 'Facebook', 'Oracle']
// 只删除,不添加:
arr.splice(2, 2); // ['Google', 'Facebook']
arr; // ['Microsoft', 'Apple', 'Oracle']
// 只添加,不删除:
arr.splice(2, 0, 'Google', 'Facebook'); // 没有删除任何元素
arr; // ['Microsoft', 'Apple', 'Google', 'Facebook', 'Oracle']
concat()方法把当前的Array和另一个Array连接起来,并返回一个新的Array:var arr = ['A', 'B', 'C'];
var added = arr.concat([1, 2, 3]);
added; // ['A', 'B', 'C', 1, 2, 3]
arr; // ['A', 'B', 'C']
请注意,concat()方法并没有修改当前Array,而是返回了一个新的Array。实际上,concat()方法可以接收任意个元素和Array,并且自动把Array拆开,然后全部添加到新的Array里:var arr = ['A', 'B', 'C'];
arr.concat(1, 2, [3, 4]); // ['A', 'B', 'C', 1, 2, 3, 4]
join()方法是一个非常实用的方法,它把当前Array的每个元素都用指定的字符串连接起来,然后返回连接后的字符串:var arr = ['A', 'B', 'C', 1, 2, 3];
arr.join('-'); // 'A-B-C-1-2-3'
如果Array的元素不是字符串,将自动转换为字符串后再连接。多维数组:如果数组的某个元素又是一个Array
,则可以形成多维数组,例如:var arr = [[1, 2, 3], [400, 500, 600], '-'];
上述Array包含3个元素,其中头两个元素本身也是Array。
八、对象var xiaoming = {
name: '小明',
birth: 1990,
school: 'No.1 Middle School',
height: 1.70,
weight: 65,
score: null
};
1.javaScript用一个{...}表示一个对象,键值对以xxx: xxx形式申明,用,隔开。注意,最后一个键值对不需要在末尾加,,如果加了,有的浏览器(如低版本的IE)将报错。如果属性名称包含特殊字符,必须用' '括起来,如访问不存在属性不会报错,而是返回undefined。delete删除一个属性删除不存在的属性不会报错2.如果我们要检测对象是否具有某个属性,可以用in操作符var xiaoming = {
name: '小明',
birth: 1990,
school: 'No.1 Middle School',
height: 1.70,
weight: 65,
score: null
};
'name' in xiaoming; // true
'grade' in xiaoming; // false
不过如果in判断一个属性存在,这个属性不一定是这个对象的,可能是其继承得到'toString' in xiaoming; // true
要判断一个属性是否是该对象拥有,而不是继承得到,可以用hasOwnProperty()方法var xiaoming = {
name: '小明'
};
xiaoming.hasOwnProperty('name'); // true
xiaoming.hasOwnProperty('toString'); // false
0 0
- JavaScript学习笔记(java不同之处)
- javascript与java的不同之处javascript
- Python学习笔记(相比静态语言的一些不同之处)
- Scala学习笔记及与Java不同之处总结-从Java开发人员角度
- java web学习笔记(javascript继承)
- Java学习笔记--javascript入门
- java 从零开始,学习笔记之基础入门<javascript>(三十)
- Java程序员的JavaScript学习笔记(汇总目录)
- JAva Long, long 不同之处
- 黑马程序员------java学习笔记之javascript
- 学习笔记——JAVA执行javascript
- javascript面向对象的不同之处
- JavaScript学习笔记(三)---JavaScript对象
- javascript学习笔记(一)--初识javascript
- JavaScript 学习笔记(一)
- JavaScript 学习笔记(二)
- JavaScript学习笔记(一)
- JavaScript 学习笔记(一)
- SVN的标准目录结构:trunk、branches、tags
- hdu 5938 Four Operations
- 对设备管理器DeviceAdmin的锁屏学习
- python闯关
- 开篇——概述
- JavaScript学习笔记(java不同之处)
- 面试
- Linux的目录结构和文件分类
- xargs命令和find的-exec
- [SSM]Spring MVC3在controller和视图之间传递参数的方法
- CentOS简单操作(三)
- 最大堆及优先队列的实现
- 连接Linux服务器的终端仿真软件的termianl type详解
- 数据结构--链表