JavaScript笔记
1.JavaScript提供七种不同的data types(数据类型)
undefined
(未定义), null
(空), boolean
(布尔型),string
(字符串), symbol
(符号), number
(数字), and object
(对象)。
①计算机能够分辨不同的数字, 例如数字12
和 strings
,"12"
和"dog"
, 或"123 cats"
, 都是字母的集合。 计算机能够精确地操作数字, 但是对于字符串却无能为力。
②Variables
(变量)允许计算机以一种动态的形式来存储和操作数据,通过操作指向数据的指针而不是数据本身来避免了内存泄露,以上的七种数据类型都可以存储到一个变量(variable)中。
③Variables
非常类似于你在数学中使用的x,y变量, 这意味着它们都是以一个简单命名的名字来代替我们赋值给它的数据。计算机中的variables
(变量)与数学中的变量不同的是,计算机可以在不同的时间存储不同类型的变量。
通过在变量的前面使用关键字var
,我们告诉 JavaScript 来创建或者 declare(声明)一个变量,就像这样:
var ourName;
Variable
(变量)的名字可以由数字、字母、$
或者 _
组成,但是不能包含空格或者以数字为首
当 JavaScript 中的变量被声明的时候,程序内部会给它一个初始值 undefined
。当你对一个值为undefined
的变量进行运算操作的时候,算出来的结果将会是 NaN
,NaN
的意思是 "Not a Number"。当你用一个没有 定义
的变量来做字符串连接操作的时候,它会如实的输出"undefined"
。
..length
来获得字符串变量 字符串
值的长度。
2.JavaScript中只有字符串类型,没有字符类型。那么如何获取到字符串中的某个字符呢?
我们通过[索引index]
来获得对应的字符。 JavaScript从0开始计数,这被称为 基于零 的索引。
例如, 在单词 "Charles" 中索引0上的字符为 "C",所以在 var firstName = "Charles"
中,你可以使用 firstName[0]
来获得第一个位置上的字符。
添加或删除元素至头部和尾部
1.追加到一个数组的末尾是通过 push()
函数
var arr = [1,2,3];
arr.push(4);
// 现在arr的值为 [1,2,3,4];
2..pop()
函数用来“抛出”一个数组末尾的值。我们可以把这个“抛出”的值赋给一个变量存储起来。
var oneDown = [1, 4, 6].pop();
现在 oneDown
的值为 6
,数组变成了 [1, 4]
。
3..shift()移出第一个元素.
4..unshift
(移入)一个元素到数组的头部。
你可以通过函数名称functionName
加上后面的小括号来调用这个函数(function)
每次调用函数时它会打印出消息的“Hello World”到开发的控制台上。所有的大括号之间的代码将在每次函数调用时执行。
function myFunction(){
console.log("Heyya, World");
}
myFunction();
函数的参数parameters
在函数中充当占位符(也叫形参)的作用,参数可以为一个或多个。调用一个函数时所传入的参数为实参,实参决定着形参真正的值。简单理解:形参即形式、实参即内容
在一个函数内声明的变量,以及该函数的参数都是局部变量,意味着它们只在该函数内可见。
function myTest() {
var loc = "foo";
console.log(loc);
}
myTest(); // "foo"
console.log(loc); // "undefined"
一个程序中有可能具有相同名称的 局部 变量 和全局 变量。在这种情况下,局部
变量将会优先于全局
变量。
Bool函数
Boolean
值绝不会写作被引号包裹起来的形式。字符串
的 "true"
和 "false"
不是 布尔值
,在 JavaScript 中也没有特殊含义。
在 JavaScript 中,为了让两个不同的 数据类型
(例如 数字
和 字符串
)的值可以作比较,它必须把一种类型转换为另一种类型。然而一旦这样做,它可以像下面这样来比较:
1 == 1 // true
1 == 2 // false
1 == '1' // true
"3" == 3 // true
严格相等运算符(===
)是相对于相等操作符(==
)的一种操作符。与相等操作符不同的是,它会同时比较元素的值和 数据类型
。
严格不相等运算符(!===
)是相对于不相等操作符(!==
)的一种操作符。与不相等操作符不同的是,它会同时比较元素的值和 数据类型
。
3 === 3 // true
3 === '3' // false 3
是一个 数字
类型的,而'3'
是一个 字符
类型的,所以3不全等于'3'。
只有当 num
的值在6和9之间(包括6和9)才会返回 "Yes"。相同的逻辑可被写为:
if (num > 5 && num < 10) {
return "Yes";
}
return "No";
break;是跳出循环 return 是 跳出 函数
不用 break的话 会发生击穿现象,会执行到下面的case;不用return 的话,调用的函数没有返回的值。
对象和数组很相似,数组是通过索引来访问和修改数据,对象是通过属性来访问和修改数据的
这是一个示例对象:
var cat = {
"name": "Whiskers",
"legs": 4,
"tails": 1,
"enemies": ["Water", "Dogs"]
};
对象适合用来存储结构化数据,就和真实世界的对象一模一样,比如一只猫。
有两种方式访问对象属性,一个是点操作符(.
),一个是中括号操作符([]
)。
第二种访问对象的方式就是中括号操作符([]
),如果你想访问的属性的名称有一个空格,这时你只能使用中括号操作符([]
)。
中括号操作符的另一个使用方式是用变量来访问一个属性。当你需要遍历对象的属性列表或查表时,这种方式极为有用。
var myDog = "Hunter";
var dogs = {
Fido: "Mutt", Hunter: "Doberman", Snoopie: "Beagle"
}
var breed = dogs[myDog];
console.log(breed)// "Doberman"
提示:当我们通过变量名访问属性的时候,不需要给变量名包裹引号。因为实际上我们使用的是变量的值,而不是变量的名称。
我们同样可以删除对象的属性delete ourDog.bark;
有时检查一个对象属性是否存在是非常有用的,我们可以用.hasOwnProperty(propname)
方法来检查对象是否有该属性。如果有返回true
,反之返回 false
。
var myObj = {
top: "hat",
bottom: "pants"
};
myObj.hasOwnProperty("top"); // true
myObj.hasOwnProperty("middle"); // false
Math.random()
用来生成一个在0(包括0)到1(不包括1)之间的随机小数,因此Math.random()
可能返回0但绝不会返回1。
随后的函数都会在return
执行前调用,所以我们可以直接返回Math.random()
的值。
我们先调用 Math.random()
,把它的结果乘以20,然后把上一步的结果传给 Math.floor()
,最终通过向下取整获得最近的整数。
var math=Math.floor(Math.random()*10);
1.Math.random(); 结果为0-1间的一个随机数(包括0,不包括1)
2.Math.floor(num); 参数num为一个数值,函数结果为num的整数部分。
3.Math.round(num); 参数num为一个数值,函数结果为num四舍五入后的整数。
Math:数学对象,提供对数据的数学计算。
Math.random(); 返回0和1间(包括0,不包括1)的一个随机数。
Math.ceil(n); 返回大于等于n的最小整数。
用Math.ceil(Math.random()*10);时,主要获取1到10的随机整数,取0的几率极小。
Math.round(n); 返回n四舍五入后整数的值。
用Math.round(Math.random());可均衡获取0到1的随机整数。
用Math.round(Math.random()*10);时,可基本均衡获取0到10的随机整数,其中获取最小值0和最大值10的几率少一半。
Math.floor(n); 返回小于等于n的最大整数。
用Math.floor(Math.random()*10);时,可均衡获取0到9的随机整数。
Regular expressions
正则表达式被用来根据某种匹配模式来寻找strings
中的某些单词。
举例:如果我们想要找到字符串The dog chased the cat
中单词 the
,我们可以使用下面的正则表达式: /the/gi
我们可以把这个正则表达式分成几段:
/
是这个正则表达式的头部
the
是我们想要匹配的模式
/
是这个正则表达式的尾部
g
代表着 global
(全局),意味着返回所有的匹配而不仅仅是第一个。
i
代表着忽略大小写,意思是当我们寻找匹配的字符串的时候忽略掉字母的大小写。
我们可以在正则表达式中使用特殊选择器来选取特殊类型的值。
特殊选择器中的一种就是数字选择器\d
,意思是被用来获取一个字符串的数字。
在JavaScript中, 数字选择器类似于: /\d/g
。
在选择器后面添加一个加号标记(+
),例如:/\d+/g
,它允许这个正则表达式匹配一个或更多数字。
尾部的g
是'global'的简写,意思是允许这个正则表达式 找到所有的匹配而不是仅仅找到第一个匹配。
var expression = /\d+/g;
我们也可以使用正则表达式选择器 \s
来选择一个字符串中的空白。
空白字符有 " "
(空格符)、\r
(回车符)、\n
(换行符)、\t
(制表符) 和 \f
(换页符)。
空白正则表达式类似于:
/\s+/g
你可以用正则表达式选择器的大写版本 来转化任何匹配。
举个例子:\s
匹配任何空白字符,\S
匹配任何非空白字符。