JavaScript 读书笔记(基本语法)
2017-05-12 08:48
429 查看
注释
//alert('我不想执行'); /*alert('我也不想执行');*/
数据类型和变量
1 Number
123; // 整数123 0.456; // 浮点数0.456 1.2345e3; // 科学计数法表示1.2345x1000,等同于1234.5 -99; // 负数 NaN; // NaN表示Not a Number,当无法计算结果时用NaN表示 Infinity; // Infinity表示无限大,当数值超过了JavaScript的Number所能表示的最大值时,就表示为Infinity四则运算
1 + 2; // 3 (1 + 2) * 5 / 2; // 7.5 2 / 0; // Infinity 0 / 0; // NaN 10 % 3; // 1 10.5 % 3; // 1.5
2 字符串 (字符串是不可变的,只可以返回一个新的字符串)
'abc',"xyz"
由于多行字符串用\n写起来比较费事,所以最新的ES6标准新增了一种多行字符串的表示方法,用反引号 ` ... ` 表示:
alert(`多行 字符串 测试`);
var name = '小明'; var age = 20; var message = '你好, ' + name + ', 你今年' + age + '岁了!'; var message = `你好, ${name}, 你今年${age}岁了!`; alert(message);注意:${name} ${age} 用``(ESC下面)而不是‘’
字符串操作
var s = 'Hello'; var s_U = s.toUpperCase(); //大写 var s_L = s.toLowerCase();//小写s不会改变(字符串是不可变的,只可以返回一个新的字符串)
indexOf()会搜索指定字符串出现的位置:
var s = 'hello, world'; s.indexOf('world'); // 返回7 s.indexOf('World'); // 没有找到指定的子串,返回-1substring()返回指定索引区间的子串:
var s = 'hello, world' s.substring(0, 5); // 从索引0开始到5(不包括5),返回'hello' s.substring(7); // 从索引7开始到结束,返回'world'
3 布尔值
true; // 这是一个true值 false; // 这是一个false值 2 > 1; // 这是一个true值 2 >= 3; // 这是一个false值
运算
&&运算是与运算,只有所有都为true,&&运算结果才是true
||运算是或运算,只要其中有一个为true,||运算结果就是true
!运算是非运算,它是一个单目运算符,把true变成false,false变成true
比较运算符 (===)
false == 0; // true false === 0; // false
第一种是==比较,它会自动转换数据类型再比较,很多时候,会得到非常诡异的结果;
第二种是===比较,它不会自动转换数据类型,如果数据类型不一致,返回false,如果一致,再比较。
由于JavaScript这个设计缺陷,不要使用==比较,始终坚持使用===比较。
唯一能判断NaN的方法是通过isNaN()函数:
isNaN(NaN); // truenull
null表示一个“空”的值,它和0以及空字符串''不同,0是一个数值,''表示长度为0的字符串,而null表示“空”。
4 数组
[1, 2, 3.14, 'Hello', null, true];
var arr = [1, 2, 3.14, 'Hello', null, true]; arr[0]; // 返回索引为0的元素,即1 arr[5]; // 返回索引为5的元素,即true arr[6]; // 索引超出了范围,返回undefined
增删改查
var arr = ['A','B','C','D']; // 增 arr.splice(0,0,'首尾增加') //在0位置删除0个数 返回的是删除的值。 // 删 arr.splice(0,2); //0位置开始删除2个值 // 改 arr[0]='改'; arr.splice(-1,1,'splice改末尾'); // 查 arr[0]; arr[arr.length-1]; //末尾 不可直接arr[-1] // 造型数组 var arr = ['A','B','C','D','E']; arr.slice(); //复制整个数组 arr.slice(0,3); //复制 0 1 2 位置的数 arr.slice(3,-1); //复制位置3 到倒数第二位数 arr.slice(3); //复制3到末尾全部
长度 length
var arr = [1, 2, 3.14, 'Hello', null, true]; arr.length; // 6请注意,直接给Array的length赋一个新的值会导致Array大小的变化:
var arr = ['A', 'B', 'C']; arr[1] = 99; arr; // arr现在变为['A', 99, 'C']
索引位置 indexOf
var arr = [10, 20, '30', 'xyz']; arr.indexOf(10); // 元素10的索引为0 arr.indexOf(20); // 元素20的索引为1 arr.indexOf(30); // 元素30没有找到,返回-1 arr.indexOf('30'); // 元素'30'的索引为2
sort 排序
var arr = ['B', 'C', 'A']; arr.sort(); arr; // ['A', 'B', 'C']
翻转 reverse
var arr = ['one', 'two', 'three']; arr.reverse(); arr; // ['three', 'two', 'one']
删除数组里若干个并替换新值 splice
// 从索引2开始删除3个元素,然后再添加两个元素: arr.splice(2, 3, 'Google', 'Facebook'); // 返回删除的元素 ['Yahoo', 'AOL', 'Excite']
当前的Array和另一个Array连接起来,并返回一个新的Array concat
join
var arr = ['A', 'B', 'C', 1, 2, 3]; arr.join('-'); // 'A-B-C-1-2-3'
5 对象
创 JavaScript的对象是一组由键-值组成的无序集合var person = { name: 'Bob', age: 20, tags: ['js', 'web', 'mobile'], city: 'Beijing', hasCar: true, zipcode: null };
增
person.scholl = '中山大学'; person['school_2'] = '华南理工';
删
delete person.school; // 删除school属性 person.school_2 = ''; //删除值
改
xiaoming.age = 18;
取 要获取一个对象的属性,我们用对象变量.属性名的方式:
person.name; // 'Bob' person.zipcode; // null
是否存在 in判断
'name' in person; // true 'school_3' in person; // false不过要小心,如果in判断一个属性存在,这个属性不一定是xiaoming的,它可能是xiaoming继承得到的
6 变量
var a; // 申明了变量a,此时a的值为undefined var $b = 1; // 申明了变量$b,同时给$b赋值,此时$b的值为1 var s_007 = '007'; // s_007是一个字符串 var Answer = true; // Answer是一个布尔值true var t = null; // t的值是null
赋值
var a = 123; // a的值是整数123 a = 'ABC'; // a变为字符串strict模式
JavaScript在设计之初,为了方便初学者学习,并不强制要求用var申明变量。这个设计错误带来了严重的后果:如果一个变量没有通过var申明就被使用,那么该变量就自动被申明为全局变量:
强制 var
启用strict模式的方法是在JavaScript代码的第一行写上:
'use strict';
7条件判断
if () { ... } else { ... }var age = 20; if (age >= 18) { alert('adult'); } else { alert('teenager'); } 如果if else 下只有一句语句 可以省略为: var age = 20; if (age >= 18) alert('adult'); else alert('teenager');
var age = 3; if (age >= 18) { alert('adult'); } else if (age >= 6) { alert('teenager'); } else { alert('kid'); }
for 循环
var x = 0; var i; for (i=1; i<=10000; i++) { x = x + i; } x; // 50005000
for in 循环
var o = { name: 'Jack', age: 20, city: 'Beijing' }; for (var key in o) { alert(key); // 'name', 'age', 'city' }
var a = ['A', 'B', 'C']; for (var i in a) { alert(i); // '0', '1', '2' alert(a[i]); // 'A', 'B', 'C' }
for ... of
var a = ['A', 'B', 'C']; a.name = 'Hello'; for (var x of a) { alert(x); // 'A', 'B', 'C' }
forEach
var s = new Set(['A', 'B', 'C']); s.forEach(function (element, sameElement, set) { alert(element); });
do ... while 循环
var n = 0; do { n = n + 1; } while (n < 100); n; // 100
Map
直接根据名字查找成绩,无论这个表有多大,查找速度都不会变慢
var m = new Map([['Michael', 95], ['Bob', 75], ['Tracy', 85]]); m.get('Michael'); // 95
var m = new Map(); // 空Map m.set('Adam', 67); // 添加新的key-value m.set('Bob', 59); m.has('Adam'); // 是否存在key 'Adam': true m.get('Adam'); // 67 m.delete('Adam'); // 删除key 'Adam' m.get('Adam'); // undefined
Set
Set和Map类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在Set中,没有重复的key。
创
var s1 = new Set(); // 空Set var s2 = new Set([1, 2, ‘三’]); // 含1, 2, 3增
s1.add(4);删
s2.delete('三'); //不可以s2.delete(0);delete()里面是值二不是位置
iterater
相关文章推荐
- 读书笔记 JavaScript高级程序设计 第三章 基本概念-语法
- javascript基本语法分析说明
- JavaScript基本入门语法集合第1/3页
- javascript学习(一)——基本语法
- JavaScript的基本语法
- javascript基本语法总结
- JavaScript基本语法B
- JavaScript学习笔记(一) js基本语法
- JavaScript学习笔记(一) js基本语法
- javascript的基本语法
- JavaScript基本语法
- JavaScript使用过程中的注意点和一些基本语法
- JavaScript基本语法
- JavaScript系统学习之一 <基本语法,运算符,流程控制语句>
- javascript基本语法
- javascript的基本语法和对象
- JavaScript入门之一:HTML常用标签、Js基本语法
- 分析两道javascript面试题-主要考查的是javascript基本语法知识
- JavaScript 实现的滚动条,熟悉一下JS的基本语法一些细节建议查看手册:
- extjs4 对javascript基本语法扩展支持(转)