數(shù)據(jù)類型
Number
js不區(qū)分整數(shù)合浮點數(shù)忘朝,統(tǒng)一使用Number默刚。
NaN:表示Not a Number 媚创,無法使用Number計算時用NaN丹允。
Infinity:表示無限大,當(dāng)數(shù)值超過Number所能表示的最大值時使用携茂。
比較運算符==和===
==你踩,會自動轉(zhuǎn)換數(shù)據(jù)類型。
===,不會轉(zhuǎn)換數(shù)據(jù)類型姓蜂,數(shù)據(jù)類型不一樣,返回false医吊。類型一樣時钱慢,再比較數(shù)值。
NaN與其他所有值都不相等卿堂,包括自身束莫。
判斷NaN的方法通過isNaN()函數(shù):isNaN(NaN);
浮點型的比較
由于計算機無法準確地表示無限循環(huán)的小數(shù),所以比較兩個浮點型數(shù)據(jù)大小草描,只能比較兩個值的差值絕對值是否小于某個閾值览绿。
1/3 === (1 - 2/3); //false
Math.abs(1/3 - (1 - 2/3)) < 0.000001; //true
null和undefined
null:表示空穗慕,undefined:表示未定義
兩者區(qū)分不大饿敲,一般只在判斷函數(shù)參數(shù)是否傳遞的情況下用undefinded。
數(shù)組
var array = [1, 2, 3, 'js', true, null];
數(shù)組表示按順序排列的集合逛绵,和Java不同怀各,js的數(shù)組可以包含任意數(shù)據(jù)類型。
還可以使用
new Array(1, 2,3);
對象
js對象是一組鍵-值隊的無序集合
var person = {
name:'Royal',
age:25,
phone:1110120110,
school:null
};
strict模式
js申明變量使用var關(guān)鍵字术浪。若不使用var瓢对,則是全局變量。
全局變量在同一個頁面的不同js文件中會相互影響胰苏。
ECMA為此推出了strict模式硕蛹,該模式下強制使用var聲明變量。
使用strict模式時硕并,在js代碼前加上一句:
'use strict';
多行字符串
由于多行字符串用 \n
寫起來比較費事法焰,所以最新的ES6標準新增了一種多行字符串的表示方法,用* ... *
表示:
alert(
`多行
字符串
測試`
);
多個字符串連接
可以同java一樣倔毙,使用+連接
ES6新增了一種模板字符串壶栋,使用${ var },它會自動替換字符串中的變量:
var name = 'Js';
var age = 20;
alert(`Hello,${name},age = ${age}`);
數(shù)組
JS的數(shù)組可以動態(tài)改變數(shù)組的大小普监,java數(shù)組的大小在初始化時確定后贵试,不能調(diào)整。
使用數(shù)組的length屬性凯正,可以獲取數(shù)組的大小毙玻。
直接給length賦值可以改變數(shù)組的大小。
var array = [1,2,3,4,5];
array.length; //length為5
array.length = 10; //length變?yōu)?0
通過索引可以給數(shù)組賦值廊散,如果索引超過數(shù)組的大小范圍桑滩,也會改變數(shù)組的大小。
var array = [1,2,3];
array[1] = 20;//[1,20,3]
array[4] = 100; // [1,20,3,undefined,100]
Array和String都可以通過indexOf()來搜索一個指定的元素的位置
var str = "this is a string";
str.indexOf('str');//返回10
str.indexOf('royal');//沒有,返回-1
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
slice()就是對應(yīng)String的substring()版本运准,它截取Array的部分元素幌氮,然后返回一個新的Array.
均是左閉右開。
var arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G'];
arr.slice(0, 3); // 從索引0開始胁澳,到索引3結(jié)束该互,但不包括索引3: ['A', 'B', 'C']
arr.slice(3); // 從索引3開始到結(jié)束: ['D', 'E', 'F', 'G']
若不傳遞參數(shù),則從開始截取到結(jié)束韭畸,conger復(fù)制這個數(shù)組宇智。
var,let和const
var申明的變量的作用域是函數(shù)級的。
let申明的變量的作用域是塊級的胰丁。
const申明的變量的作用域是塊級的的常量随橘。