【JavaScript】快速入门
摘抄地址快速入门
No1:
JavaScript严格区分大小写
No2:
JavaScript不区分整数和浮点数,统一用Number表示
NaN表示Not a Number,当无法计算结果时用NaN表示
Infinity表示无限大,当数值超过了JavaScript的Number所能表示的最大值时,就表示为Infinity
JavaScript允许对任意数据类型做比较
No3:
要特别注意相等运算符==
。JavaScript在设计时,有两种比较运算符:
第一种是==
比较,它会自动转换数据类型再比较,很多时候,会得到非常诡异的结果;
第二种是===
比较,它不会自动转换数据类型,如果数据类型不一致,返回false
,如果一致,再比较。
由于JavaScript这个设计缺陷,不要使用==
比较,始终坚持使用===
比较。
另一个例外是NaN
这个特殊的Number与所有其他值都不相等,包括它自己
No4:
undefined,它表示“未定义”。
No5:
在同一个页面的不同的JavaScript文件中,如果都不用var
申明,恰好都使用了变量i
,将造成变量i
互相影响,产生难以调试的错误结果。
使用var
申明的变量则不是全局变量,它的范围被限制在该变量被申明的函数体内(函数的概念将稍后讲解),同名变量在不同的函数体内互不冲突
不用var
申明的变量会被视为全局变量,为了避免这一缺陷,所有的JavaScript代码都应该使用strict模式。在strict模式下运行的JavaScript代码,强制通过var
申明变量,未使用var
申明变量就使用的,将导致运行错误。
No6:
由于多行字符串用\n
写起来比较费事,所以最新的ES6标准新增了一种多行字符串的表示方法,用反引号 ` ... ` 表示。反引号在键盘的ESC下方,数字键1的左边
No7:
模板字符串
- var name = '小明';
- var age = 20;
- var message = `你好, ${name}, 你今年${age}岁了!`;
- alert(message);
No8:
字符串是不可变的,如果对字符串的某个索引赋值,不会有任何错误,但是,也没有任何效果:
No9:
直接给Array
的length
赋一个新的值会导致Array
大小的变化:
- var arr = [1, 2, 3];
- arr.length; //
- arr.length = 6;
- arr; // arr变为[1, 2, 3, undefined, undefined, undefined]
- arr.length = 2;
- arr; // arr变为[1, 2]
- var arr = ['A', 'B', 'C'];
- arr[1] = 99;
- arr; // arr现在变为['A', 99, 'C']
- var arr = [1, 2, 3];
- arr[5] = 'x';
- arr; // arr变为[1, 2, 3, undefined, undefined, 'x']
No10:
【slice】截取
- 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']
- 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】向Array
的末尾添加若干元素
【pop】把Array
的最后一个元素删除掉
【unshift】往Array
的头部添加若干元素
【shift】把Array
的第一个元素删掉
【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']
【join】把当前Array
的每个元素都用指定的字符串连接起来,然后返回连接后的字符串
- ar arr = ['A', 'B', 'C', 1, 2, 3];
- arr.join('-'); // 'A-B-C-1-2-3'
No11:
【对象】
- var xiaoming = {
- name: '小明',
- birth: 1990,
- school: 'No.1 Middle School',
- height: 1.70,
- weight: 65,
- score: null
- };
访问
- xiaoming.name; // '小明'
- xiaoming.birth; //
或
- var xiaohong = {
- name: '小红',
- 'middle-school': 'No.1 Middle School'
- };
访问
- xiaohong['middle-school']; // 'No.1 Middle School'
- xiaohong['name']; // '小红'
- xiaohong.name; // '小红'
- var xiaoming = {
- name: '小明'
- };
- xiaoming.age; // undefined
- xiaoming.age = 18; // 新增一个age属性
- xiaoming.age; //
- delete xiaoming.age; // 删除age属性
- xiaoming.age; // undefined
- delete xiaoming['name']; // 删除name属性
- xiaoming.name; // undefined
- delete xiaoming.school; // 删除一个不存在的school属性也不会报错
【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
要判断一个属性是否是xiaoming
自身拥有的,而不是继承得到的,可以用hasOwnProperty()
方法:
- var xiaoming = {
- name: '小明'
- };
- xiaoming.hasOwnProperty('name'); // true
- xiaoming.hasOwnProperty('toString'); // false
No12:
JavaScript把null
、undefined
、0
、NaN
和空字符串''
视为false
,其他值一概视为true
No13:
【循环】
- var x = 0;
- var i;
- for (i=1; i<=10000; i++) {
- x = x + i;
- }
- x;
注意:在括号里不要写int i=1,因为js是动态语言,不需要定义变量类型
【for...in】
- var o = {
- name: 'Jack',
- age: 20,
- city: 'Beijing'
- };
- for (var key in o) {
- if (o.hasOwnProperty(key)) {
- console.log(key); // 'name', 'age', 'city'
- }
- }
No14:
【Map】
- var m = new Map([['Michael', 95], ['Bob', 75], ['Tracy', 85]]);
- m.get('Michael'); //
- var m = new Map(); // 空Map
- m.set('Adam', 67); // 添加新的key-value
- m.set('Bob', 59);
- m.has('Adam'); // 是否存在key 'Adam': true
- m.get('Adam'); //
- m.delete('Adam'); // 删除key 'Adam'
- m.get('Adam'); // undefined
【Set】
- var s = new Set([1, 2, 3, 3, '3']);
- s; // Set {1, 2, 3, "3"}
- s.add(4);
- s; // Set {1, 2, 3, 4}
- s.add(4);
- s; // 仍然是 Set {1, 2, 3, 4}
No15:
【iterable】
Array
、Map
和Set
都属于iterable
类型。
【for...of...】
- var a = ['A', 'B', 'C'];
- var s = new Set(['A', 'B', 'C']);
- var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]);
- for (var x of a) { // 遍历Array
- console.log(x);
- }
- for (var x of s) { // 遍历Set
- console.log(x);
- }
- for (var x of m) { // 遍历Map
- console.log(x[0] + '=' + x[1]);
- }
for ... of
循环和for ... in
循环的区别:
1.for ... in
循环由于历史遗留问题,它遍历的实际上是对象的属性名称
2.for ... of
循环则完全修复了这些问题,它只循环集合本身的元素
No16:
【forEach()】
- var s = new Set(['A', 'B', 'C']);
- s.forEach(function (element, sameElement, set) {
- console.log(element);
- });
- var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]);
- m.forEach(function (value, key, map) {
- console.log(value);
- });
- var a = ['A', 'B', 'C'];
- a.forEach(function (element) {
- console.log(element);
- });
【JavaScript】快速入门的更多相关文章
- JavaScript快速入门(四)——JavaScript函数
函数声明 之前说的三种函数声明中(参见JavaScript快速入门(二)——JavaScript变量),使用Function构造函数的声明方法比较少见,我们暂时不提.function func() { ...
- Web开发初探之JavaScript 快速入门
本文改编和学习自 A JavaScript Primer For Meteor 和 MDN Web教程 前文 Web开发初探 概述 本文以介绍 JavaScript 为主,初学者掌握本文的内容后,将能 ...
- javascript快速入门
这个在w3school在线文档讲解的很详细,还能在线练习. 所以我只写一些入门的东西和最常用的总结以及注意事项: JavaScript 是脚本语言 一般被人们称为JS,Jquery就是对js语言的封装 ...
- Javascript快速入门(上篇)
Javascript的熟练之路,小弟来了. JavaScript简介:JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript ...
- Javascript快速入门(下篇)
Javascript, cheer up. Ajax:其通过在Web页面与服务器之间建立一个额外的处理层,这个处理层就被称为Ajax引擎,它解释来自用户的请求,在后台以异步的方式处理服务器通信,其结构 ...
- javascript快速入门21--DOM总结
跨浏览器开发 市场上的浏览器种类多的不计其数,它们的解释引擎各不相同,期待所有浏览器都一致的支持JavaScript,CSS,DOM,那要等到不知什么时候,然而开发者不能干等着那天.历史上已经有不少方 ...
- javascript快速入门10--运算符,语句
一元运算符 一元运算符只有一个参数,即要操作的对象或值.它们是 ECMAScript 中最简单的运算符. delete 运算符删除对以前定义的对象属性或方法的引用.例如: var obj = new ...
- javascript快速入门8--值,类型与类型转换
原始值和引用值 在ECMAScript中,变量可以存放两种类型的值,即原始值和引用值. 原始值(primitive value)是存储在栈(stack)中的简单数据段,也就是说,它们的值直接存储在变量 ...
- javascript快速入门2--变量,小学生数学与简单的交互
变量 对于变量的理解:变量是数据的代号.如同人的名字一样. var num;//在JavaScript中使用关键字var声明一个变量 在JavaScript中,使用上面的语法,就可以声明一个变量,以便 ...
- JavaScript 快速入门回顾
数据类型Number JavaScript不区分整数和浮点数,统一用Number表示,以下都是合法的Number类型: 123; // 整数123 0.456; // 浮点数0.456 1.2345e ...
随机推荐
- 判断iOS版本号
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 4.0) { }
- Confluence 6 数据中心的缓存
在 Confluence 数据中心(集群)你需要分布缓存和每一个节点的缓存.在集群管理界面,将会定义分布缓存和节点本地缓存. 缓存配置文件存储在集群共享目录中的 home 目录下面. https:// ...
- day07 元组类型 字典类型 集合
元组:元组就是一个不可变的列表 1.用途:当我们需要记录多个同种属性的值,并且只有读的需求,没有改的需求,应该用元组. 2.定义方式:在()内用逗号分隔开多个任意类型的元素 t=(‘egon’)#注意 ...
- Android 基础 二 四大组件 Activity
Activity Intent IntentFilter 一理论概述 一. Activity 用来提供一个能让用户操作并与之交互的界面. 1.1 启动 startActivity(Intent int ...
- LeetCode(117):填充同一层的兄弟节点 II
Medium! 题目描述: 给定一个二叉树 struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *n ...
- checkbox 选中的id拼接长字符串
需求描述:为了做一个批量操作,需要获取到checkbox选中的项的id,并且把选中的id拼接成字符串. 解决思路:先获取到checkbox选中项,然后拼接.(这tm不废话么),问题的关键就是获取che ...
- Laravel 中通过自定义分页器分页方法实现伪静态分页链接以利于 SEO
我们知道,Laravel 自带的分页器方法包含 simplePaginate 和 paginate 方法,一个返回不带页码的分页链接,另一个返回带页码的分页链接,但是这两种分页链接页码都是以带问号的动 ...
- spring cloud Hystrix监控面板Hystrix Dashboard和Turbine
我们提到断路器是根据一段时间窗内的请求情况来判断并操作断路器的打开和关闭状态的.而这些请求情况的指标信息都是HystrixCommand和HystrixObservableCommand实例在执行过程 ...
- Python深度学习案例2--新闻分类(多分类问题)
本节构建一个网络,将路透社新闻划分为46个互斥的主题,也就是46分类 案例2:新闻分类(多分类问题) 1. 加载数据集 from keras.datasets import reuters (trai ...
- fg、bg、jobs、&、nohup、ctrl+z、ctrl+c 命令
fg.bg.jobs.&.nohup.ctrl+z.ctrl+c 命令 一.& 加在一个命令的最后,可以把这个命令放到后台执行,如 watch -n 10 sh test.sh &am ...