Javascript基础(一)

来源:互联网 发布:php命令行 编辑:程序博客网 时间:2024/05/22 06:50

一、数据类型

Number 不区分整数和浮点数

 var x=123;  x=0.456; x=1.2e4;    x=-10; x=NaN;  // Not a Number ,无法计算结果 x=Infinity; // Infinity表示无限大,当数过值超所能表示的最大值时,就表示为Infinity  //四则运算,规则和数学一致:   7/2=3.5
   2 / 0; // Infinity   0 / 0; // NaN

布尔值 true false

比较运算符

当我们对数据做比较时,可以通过比较运算符得到一个布尔值

   JavaScript在设计时,有两种比较运算符:

第一种是==比较,它会自动转换数据类型再比较,很多时候,会得到非常诡异的结果;

第二种是===比较,它不会自动转换数据类型,如果数据类型不一致,返回false,如果一致,再比较。

由于JavaScript这个设计缺陷,不要使用==比较,始终坚持使用===比较。

另一个例外是NaN这个特殊的Number与所有其他值都不相等,包括它自己:

NaN === NaN; // false
isNaN(NaN); // true
关于浮点数的比较
1 / 3 === (1 - 2 / 3); // false
Math.abs(1 / 3 - (1 - 2 / 3)) < 0.0000001; // true

字符串类型

var str="Hello"; var str1=" world"; var str2=str+"the "+str1+"!"; str2='${str}the ${str1}!'; str2.length; //大小写转换 str2.toUpperCase(); str2.toLowerCase(); //查找字符串 var s = 'hello, world'; s.indexOf('world'); // 返回7 s.indexOf('World'); // 没有找到指定的子串,返回-1 var s = 'hello, world' s.substring(0, 5); // 从索引0开始到5(不包括5),返回'hello' s.substring(7); // 从索引7开始到结束,返回'world'
数组

var arr = [1, 2, 3.14, 'Hello', null, true]; arr.length; // 6 //查找元素 arr.indexOf("Hello");  //3 //截断数组 arr.slice(0, 3); // 从索引0开始,到索引3结束,但不包括索引3 arr.slice(3); // 从索引3开始到结束 //向数组尾部添加若干元素 arr.push("c"); arr.pop(); // 空数组继续pop不会报错,而是返回undefined //向数组头部添加若干元素 arr.unshift("a"); arr.shift(); //空数组继续shift不会报错,而是返回undefined //排序 arr.sort(); arr.reverse(); //数组翻转 //指定的索引开始删除若干元素,然后再从该位置添加若干元素 // 从索引2开始删除3个元素,然后再添加两个元素:  arr.splice(2, 3, 'Good', 3); // 返回删除的元素    //数组连接  var arr1 = ['A', 'B', 'C'];  var added = arr1.concat([1, 2, 3]);  var arr = ['A', 'B', 'C', 1, 2, 3];  arr.join('-'); // 'A-B-C-1-2-3'
对象
  var student={ id: 123, name:"Helen", age : 18   }   //JavaScript的对象是动态类型,你可以自由地给一个对象添加或删除属性  student.score=99;  delete student.age;  student.hasOwnProperty('name'); // true  student.hasOwnProperty('toString'); // false

Map和Set

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  //重复元素自动过滤  var s = new Set([1, 2, 3, 3, '3']);  s; // Set {1, 2, 3, "3"}

二、循环 判断

//分支判断  if (age >= 6) {    alert('teenager');  } else if (age >= 18) {    alert('adult'); } else {    alert('kid'); } //for循环 var arr = ['Apple', 'Google', 'Microsoft']; var i, x; for (i=0; i<arr.length; i++) {    x = arr[i];    alert(x); } //一个对象的所有属性依次循环出来 var o = {    name: 'Jack',    age: 20,    city: 'Beijing' };for (var key in o) {    if (o.hasOwnProperty(key)) {        alert(key); // 'name', 'age', 'city'    } } //while 和 do while
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    alert(x);}for (var x of s) { // 遍历Set    alert(x);}for (var x of m) { // 遍历Map    alert(x[0] + '=' + x[1]);}

foreach循环
var s = new Set(['A', 'B', 'C']);s.forEach(function (element, sameElement, set) {    alert(element);});
var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]);m.forEach(function (value, key, map) {    alert(value);});