【Javascript学习笔记】【01数据类型&&变量】

目录

  • 目录
  • 数据类型
    • Number
    • 字符串
      • 多行字符串
      • 模板字符串
      • 操作字符串
      • toUpperCase()
      • toLowerCase()
      • indexOf()
      • substring(),substring(x,y)
    • 布尔值
    • 比较运算符
    • null和undefined
    • 数组
      • indexOf()
      • slice()
      • push()和pop()
      • unshift()和shift()
      • sort()
      • reverse()
      • splice()万能修改
      • concat()连接
      • join()每个元素都用指定的字符串连接起来
      • 多维数组
    • 对象
      • 动态添加或删除对象
      • 检测xiaoming是否拥有某一属性
  • 变量
  • 快捷链接(包含各类实践练习)

数据类型

Number

JavaScript不区分整数和浮点数,统一用Number表示。Number可以直接做四则运算,规则和数学一致。
以下都是合法的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

字符串

字符串是以单引号’或双引号”括起来的任意文本。

多行字符串

JavaScript的字符串就是用”或”“括起来的字符表示。如果字符串内部既包含’又包含”可以用转义字符\来标识

‘I\’m \”OK\”!’;

表示的字符串内容是:I’m “OK”!

ES6标准新增了一种多行字符串的表示方法,用反引号 ... 表示:

`这是一个
多行
字符串`;

模板字符串

多个字符串连接起来,可以用+号连接:

var name = ‘小明’;
var age = 20;
var message = ‘你好, ’ + name + ‘, 你今年’ + age + ‘岁了!’;

ES6新增了一种模板字符串,表示方法和上面的多行字符串一样,但是它会自动替换字符串中的变量:

var name = ‘小明’;
var age = 20;
var message = `你好, name, n a m e , 你 今 年 {age}岁了!`;
alert(message);

操作字符串

var s = ‘Hello, world!’;
s.length; // 13

var s = ‘Hello, world!’;
s[0]; // ‘H’
s[6]; // ’ ‘

需要特别注意的是,字符串是不可变的,如果对字符串的某个索引赋值,不会有任何错误,但是,也没有任何效果:

var s = ‘Test’;
s[0] = ‘X’;
alert(s); // s仍然为’Test’

toUpperCase()

字符串全部变为大写

toLowerCase()

字符串全部变为小写

indexOf()

搜索指定字符串出现的位置

substring(),substring(x,y)

返回指定索引区间的子串

布尔值

布尔值和布尔代数的表示完全一致,一个布尔值只有true、false两种值。

比较运算符

与日常比较运算符大同小异。
JavaScript允许对任意数据类型做比较:

false == 0; // true
false === 0; // false

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

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

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

NaN === NaN; // false
唯一能判断NaN的方法是通过isNaN()函数:
isNaN(NaN); // true

null和undefined

》null表示一个“空”的值,它和0以及空字符串”不同,0是一个数值,”表示长度为0的字符串,而null表示“空”。
》undefined表示值未定义。undefined仅仅在判断函数参数是否传递的情况下有用。

数组

定义,要取得Array的长度,直接访问length属性:

var arr = [1, 2, 3.14, ‘Hello’, null, true];
arr.length; // 6

直接给Array的length赋一个新的值会导致Array大小的变化(多出没赋值部分为undefined)

arr.length = 8;
arr; // arr变为[1, 2, 3.14, ‘Hello’, null, true, undefined, undefined]

不同于字符串,Array可以通过索引把对应的元素修改为新的值

arr[1] = 3;
arr; // arr现在变为[1, 3, 3.14, ‘Hello’, null, true]

在编写代码时,不建议直接修改Array的大小,访问索引确保索引不越界导致的部分值出现undefined。

indexOf()

搜索一个指定的元素的位置

slice()

截取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’]
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()头部添加若干元素,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; // []

sort()

排序,默认从小到大

reverse()

反转

splice()万能修改

它可以从指定的索引开始删除若干元素,然后再从该位置添加若干元素
splice(起始索引,删除数目,“添加的东西”,…)

concat()连接

把当前的Array和另一个Array连接起来,并返回一个新的Array

var arr = [‘A’, ‘B’, ‘C’];
var added = arr.concat([1, 2, 3,4]);
added; // [‘A’, ‘B’, ‘C’, 1, 2, 3,4]
arr; // [‘A’, ‘B’, ‘C’]

join()每个元素都用指定的字符串连接起来

var arr = [‘A’, ‘B’, ‘C’, 1, 2, 3,4];
arr.join(‘-‘); // ‘A-B-C-1-2-3-4’

多维数组

var arr = [[1, 2, 3], [4, 5, 6]];//二维
var x = arr[1][1];//5

对象

JavaScript的对象是一组由键-值组成的无序集合:

var person = {
name: ‘Bob’,
age: 20,
tags: [‘js’, ‘web’, ‘mobile’],
city: ‘Beijing’,
hasCar: true,
zipcode: null
};

要获取一个对象的属性,我们用对象变量.属性名的方式:

person.name; // ‘Bob’
person.zipcode; // null
或者
person.[‘name’]; // ‘Bob’

动态添加或删除对象

var xiaoming = {
name: ‘小明’
};
xiaoming.age = 18; // 新增一个age属性
delete xiaoming.age; // 删除age属性

检测xiaoming是否拥有某一属性

‘name’ in xiaoming; // true
‘grade’ in xiaoming; // false

变量

变量不仅可以是数字,还可以是任意数据类型。

var a; // 申明了变量a,此时a的值为undefined
var b=1;// b = 1 ; / / 申 明 了 变 量 b,同时给 b b 赋 值 , 此 时 b的值为1
var s_007 = ‘007’; // s是一个字符串”007”
var Answer = true; // Answer是一个布尔值true
var t = null; // t的值是null

快捷链接(包含各类实践练习)

全部Javascript学习笔记的目录 Click Here>>

你可能感兴趣的:(前端(js,html,css,less))