关于JavaScript语法的小笔记
1、pop()
函数用来移出数组中最后一个元素;shift()
函数移出数组中的第一项,unshift
(移入)一个元素到数组的头部。
例如:
var myArray = [["John", ], ["dog", ]];
var a=myArray.pop(); //var myArray = [ ["John", 23] ]; 移出最后一个
var a=myArray.shift(); //var myArray = [ ["dog", 3] ]; 移出第一个
var c=myArray.unshift(["ccc",]); //var myArray =[["ccc",1],["John", 23], ["dog", 3]]; 数组["ccc",1]插入了头部,成为了第一个
2、所有的比较操作符返回的都是一个boolean值,要么是 true
要么是false
。使用 if/else
语句来做比较然后返回true
或false
已经成为大家的共识:
例如:
function isEqual(a,b) {
if (a === b) {
return true;
} else {
return false;
}
}
可以简化成:
function isEqual(a,b) {
return a === b;
}
3、有两种方式访问对象属性,一个是点操作符(.
),一个是中括号操作符([]
)。当你知道属性的名称的时候,使用点操作符。
1)点操作符(.
)
例如:
var myObj = {
prop1: "val1",
prop2: "val2"
};
var prop1val = myObj.prop1; // val1
var prop2val = myObj.prop2; // val2 //或 var testObj = {
"hat": "ballcap",
"shirt": "jersey",
"shoes": "cleats"
};
var hatValue = testObj.hat; // ballcap 点操作符
var shirtValue = testObj.shirt; // jersey 点操作符
2)中括号操作符([]
):如果你想访问的属性的名称有一个空格,这时你只能使用中括号操作符([]
)。
var myObj = {
"Space Name": "Kirk",
"More Space": "Spock"
};
myObj["Space Name"]; // Kirk
myObj['More Space']; // Spock //提示:属性名称中如果有空格,必须把属性名称用单引号或双引号包裹起来。
注意:
1)当你创建了一个对象后,你可以用点操作符或中括号操作符来更新对象的属性。
// 举例
var ourDog = {
"name": "Camper",
"legs": ,
"tails": ,
"friends": ["everything!"]
};
让我们更改它的名称为 "Happy Camper",这有两种方式来更新对象的name
属性:
var ourDog = {
"name": "Camper",
"legs": ,
"tails": ,
"friends": ["everything!"]
}; ourDog.name = "Happy Camper"; //点操作符
ourDog["name"]= "Happy Camper"; //中括号操作符
2)也可以像更改属性一样给对象添加属性。
// 举例
var ourDog = {
"name": "Camper",
"legs": ,
"tails": ,
"friends": ["everything!"]
};
给myDog
添加一个"bark"
属性,设置它的值为狗的声音,例如:"bow-wow"。
var ourDog = {
"name": "Camper",
"legs": ,
"tails": ,
"friends": ["everything!"]
}; ourDog.bark = "bow-wow"; //点操作符
ourDog["bark"]= "bow-wow"; //中括号操作符
3)删除对象的属性 (删除ourDog对象的"tails"
属性。)
// 举例
var ourDog = {
"name": "Camper",
"legs": ,
"tails": ,
"friends": ["everything!"],
"bark": "bow-wow"
}; delete ourDog.bark; //点操作符
4)中括号操作符的另一个使用方式是用变量来访问一个属性。当你需要遍历对象的属性列表或查表时,这种方式极为有用。
使用变量来访问属性的例子:
var someProp = "propName";
var myObj = {
propName: "Some Value"
}
myObj[someProp]; // "Some Value"
以及:
var myDog = "Hunter";
var dogs = {
Fido: "Mutt",
Hunter: "Doberman",
Snoopie: "Beagle"
}
var breed = dogs[myDog]; // "Hunter"
console.log(breed)// "Doberman"
提示:当我们通过变量名访问属性的时候,不需要给变量名包裹引号。因为实际上我们使用的是变量的值,而不是变量的名称。
4、检查一个对象属性是否存在是非常有用的,我们可以用.hasOwnProperty(propname)
方法来检查对象是否有该属性。如果有返回true
,反之返回 false
。
//举例1
var myObj = {
top: "hat",
bottom: "pants"
};
myObj.hasOwnProperty("top"); // true
myObj.hasOwnProperty("middle"); // false
//举例2 //用函数checkObj检查myObj是否有checkProp属性,如果属性存在,返回属性对应的值,如果不存在,返回 "Not Found"。 //代码如下 var myObj = {
gift: "pony",
pet: "kitten",
bed: "sleigh"
};
function checkObj(checkProp) {
var tr = myObj.hasOwnProperty(checkProp); //检查对象是否存在,将结果赋值给tr
if(tr===true){ //判断tr是否true ?(存在)
return myObj[checkProp]; // //存在则返回属性对应的值
}else{
return "Not Found"; //不存在,则返回“Not Found”
} }
checkObj("gift");
5、for循环:
for循环中的三个表达式用分号隔开:
for ([初始化]; [条件判断]; [计数器])
初始化
语句只会在执行循环开始之前执行一次。它通常用于定义和设置你的循环变量。
条件判断
语句会在每一轮循环的开始执行,只要条件判断为 true
就会继续执行循环。
当条件为false
的时候,循环将停止执行。这意味着,如果条件在一开始就为 false
,这个循环将不会执行。
计数器
是在每一轮循环结束时执行,通常用于递增或递减
//举例1:
var ourArray = [];
for (var i = ; i < ; i++) {
ourArray.push(i);
}
//先初始化i = 0,条件 i < 5 为真,进入第一次循环,执行大括号里的代码,第一次循环结束。递增i的值,条件判断,就这样依次执行下去,直到条件判断为假,整个循环结束。 //举例2:通过更改我们的 计数器,我们可以按照偶数顺序来迭代。
var ourArray = [];
for (var i = ; i < ; i += ) {
ourArray.push(i);
}
//初始化 i = 0,当 i < 10 的时候继续循环。i += 2 让 i 每次循环之后增加2。循环结束后,ourArray 的值为 [0,2,4,6,8]。奇数同上 //举例3:for循环也可以逆向迭代
var ourArray = [];
for (var i=; i > ; i-=) {
ourArray.push(i);
}
//为了能够从后往前两两倒数,需要改变我们的 初始化,条件判断 和 计数器。让 i = 10,并且当 i > 0 的时候才继续循环。使用 i-=2 来让 i 每次循环递减 2。循环结束后,ourArray 的值为 [10,8,6,4,2]。 //举例4:for 循环迭代输出一个数组的每个元素
var arr = [,,,,];
for (var i=; i < arr.length; i++) {
console.log(arr[i]);
}
//数组的索引从零开始的,这意味着数组的最后一个元素的下标是:数组的长度 - 1。我们这个循环的 条件 是 i < arr.length,当 i 的值为 长度-1 的时候循环就停止了 //举例5:二维数组,可以使用相同的逻辑,先遍历外面的数组,再遍历里面的子数组。
//1):
var arr = [
[,], [,], [,]
];
for (var i=; i < arr.length; i++) {
for (var j=; j < arr[i].length; j++) {
console.log(arr[i][j]);
}
}
//一次输出 arr 中的每个子元素。提示,对于内部循环,我们可以通过 arr[i] 的 .length 来获得子数组的长度,因为 arr[i] 的本身就是一个数组。
//2):
function multiplyAll(arr) {
var product = ;
for (var i=;i<arr.length;i++){
for (var j=;j<arr[i].length;j++){
product *= arr[i][j];
}
}
return product;
}
multiplyAll([[,],[,],[,,]]);
//函数 multiplyAll,获得 arr 内部数组的每个数字相乘的结果 product。
6、while循环:
另一种类型的 JavaScript 循环被称为while循环
,因为它规定,当(while)条件为真,循环才会执行,反之不执行。
//举例
var ourArray = [];
var i = ;
while(i < ) {
ourArray.push(i);
i++;
}
7、计算机的行为只有两种:确定性和随机性。Math.random()
用来生成一个在0(包括0)到1(不包括1)之间的随机小数,因此Math.random()
可能返回0但绝不会返回1。
//举例:
function myFunction(arr) {
var arr = Math.random();
return arr;
}
//myFunction 来生成一个随机数。
1)生成随机小数很棒,但随机数更有用的地方在于生成随机整数
例子:
- 用
Math.random()
生成一个随机小数。 - 把这个随机小数乘以
20
。 - 用
Math.floor()
向下取整 获得它最近的整数。 - 注意:记住
Math.random()
永远不会返回1
。同时因为我们是在用Math.floor()
向下取整,所以最终我们获得的结果不可能有20
。这确保了我们获得了一个在0到19之间的整数
//把操作连缀起来,代码类似于下面:
Math.floor(Math.random() * );
例子:
//生成一个 0 到 9之间的随机整数。
function myFunction(arr) {
var arr= Math.floor(Math.random() * );
return arr;
}
2)要生成的随机数是在两个指定的数之间。
//需要定义一个最小值和一个最大值。
Math.floor(Math.random() * (max - min + )) + min //例子:
function randomRange(myMin, myMax) {
var myRandom = Math.floor(Math.random() * (myMax - myMin + )) + myMin;
return myRandom;
}
var myRandom = randomRange(, );
//randomRange的函数,参数为myMin和myMax,返回一个在myMin(包括myMin)和myMax(包括myMax)之间的随机数。
8、Regular expressions
正则表达式 被用来根据某种匹配模式来寻找strings
中的某些单词。
举例:如果我们想要找到字符串The dog chased the cat
中单词 the
,我们可以使用下面的正则表达式: /the/gi
我们可以把这个正则表达式分成几段:
/
是这个正则表达式的头部
the
是我们想要匹配的模式
/
是这个正则表达式的尾部
g
代表着 global
(全局),意味着返回所有的匹配而不仅仅是第一个。
i
代表着忽略大小写,意思是当我们寻找匹配的字符串的时候忽略掉字母的大小写。
1)可以在正则表达式中使用特殊选择器来选取特殊类型的值。
//特殊选择器中的一种就是数字选择器\d,意思是被用来获取一个字符串的数字。
//在JavaScript中, 数字选择器类似于: /\d/g。 //在选择器后面添加一个加号标记(+),例如:/\d+/g,它允许这个正则表达式匹配一个或更多数字。 //尾部的g是'global'的简写,意思是允许这个正则表达式 找到所有的匹配而不是仅仅找到第一个匹配。 //例子:
/\d+/g
2)可以使用正则表达式选择器 \s
来选择一个字符串中的空白。
//空白字符有 " " (空格符)、\r (回车符)、\n (换行符)、\t (制表符) 和 \f (换页符)。 //空白正则表达式类似于: /\s+/g
3)注意:正则表达式选择器的大写版本 来转化任何匹配.
//例子:
\s //匹配任何空白字符,
\S //匹配任何非空白字符。
关于JavaScript语法的小笔记的更多相关文章
- JavaScript基础——JavaScript语法基础(笔记)
JavaScript语法基础(笔记) 1.语言编码 JavaScript语言建立在Unicode字符集基础之上,因此脚本中,用户可以使用双字节的字符命名常量.变量或函数等. [示例] var 我=&q ...
- JavaScript中if语句优化和部分语法糖小技巧推荐
前言 在前端日常开发过程中,if else判断语句使用的次数应该是比较频繁的了,一些较为复杂的场景,可能会用到很多判断,在某个代码块使用很多if else时,代码会显得较为冗余,阅读起来不够清晰. 除 ...
- web前端学习(四)JavaScript学习笔记部分(2)-- JavaScript语法详解
2.1.Javascript语法-运算符(1) 复数运算符 %取余 ++ -- 赋值运算符 += -= *= /= %= 字符串操作 <!DOCTYPE html> <html la ...
- ( 译、持续更新 ) JavaScript 上分小技巧(三)
最近家里杂事较多,自学时间实在少的可怜,所以都在空闲时间看看老外写的内容,学习之外顺便翻译分享~等学习的时间充足些再写写自己的一些学习内容和知识点分析(最近有在接触的:复习(C#,SQL).(学习)T ...
- ( 译、持续更新 ) JavaScript 上分小技巧(一)
感谢好友破狼提供的这篇好文章,也感谢写这些知识点的作者们和将他们整理到一起的作者.这是github上的一篇文章,在这里本兽也就只做翻译,由于本兽英语水平和编程能力都不咋地,如有不好的地方也请多理解体谅 ...
- Javascript语法基础
Javascript语法基础 一.基本数据类型 JavaScript中支持数字.字符串和布尔值三种基本数据类型: 1.数字 数字型是JavaScript中的基本数据类型.在JavaScript ...
- ArcGIS API for JavaScript 4.2学习笔记[0] AJS4.2概述、新特性、未来产品线计划与AJS笔记目录
放着好好的成熟的AJS 3.19不学,为什么要去碰乳臭未干的AJS 4.2? 4.2全线基础学习请点击[直达] 4.3及更高版本的补充学习请关注我的博客. ArcGIS API for JavaScr ...
- JavaScript语法详解:JS简介&变量
本文最初发表于博客园,并在GitHub上持续更新前端的系列文章.欢迎在GitHub上关注我,一起入门和进阶前端. 以下是正文. JavaScript简介 Web前端有三层: HTML:从语义的角度,描 ...
- (网页)12种不宜使用的Javascript语法(转)
转自阮一峰: 最近写的一些小东西,总是出各种各样的问题,用了angular.js反应居然比我的jQuery还慢,客户吐槽了,我又把一个小操作,改成了jQuery.浏览一下大神的的博客.转载一点东西: ...
随机推荐
- 事件拦截,仿qq侧拉的操作中
1,处理DrawerLayout自定义的侧拉菜单时候,当手指点击listview的时候,不起作用,就是因为 手指滑动稍微有一点x方向的动作,抽屉控件就请求父控件(listview)不要拦截,这样lis ...
- 【安装】python3.4版安装与2.x共存问题
首先,到官网去下载python3.x版,这里推荐3.4以上的版本,自带pip库,以后不用自己另外下载 3.4.4版: https://www.python.org/downloads/release/ ...
- 关于wkwebview
一.引入库 #import <WebKit/WebKit.h> 二.初始化有两种方式 // 默认初始化 - (instancetype)initWithFrame:(CGRect)fram ...
- ps遇到的问题及笔记
1. ps软件图层面板中不显示缩略图 打开软件后,任意打开一个文件,再打开图层面板(直接按F7也可),点图层面板右上角的小三角后有一个新的面板出现,点下面的"面板选项"弹出一个面板 ...
- lda 主题模型--TOPIC MODEL--Gibbslda++结果分析
在之前的博客中已经详细介绍了如何用Gibbs做LDA抽样.(http://www.cnblogs.com/nlp-yekai/p/3711384.html) 这里,我们讨论一下实验结果: 结果文件包括 ...
- Postman怎么用?
国庆期间的工作就是搞清楚postman怎么用?
- 改造vim
1.安装Vim和Vim基本插件首先安装好Vim和Vim的基本插件.这些使用apt-get安装即可: lingd@ubuntu:~/arm$sudo apt-get install vim vim-sc ...
- 窗口信息获取器 Spy4Win v0.20b 中文绿色版
软件名称:窗口信息获取器 Spy4Win v0.20b 中文绿色版软件类别:国产软件运行环境:Windows XP软件语言:简体中文授权方式:免费版软件大小:1.67 MB软件等级:整理时间:2012 ...
- 制作jar包
1.打开cmd 2.通过cd切换到要打包的工程所在的bin目录(一定是bin目录) 运行jar -cvf aa.jar *.* jar是打包的命令 -cvf可以自行查看一下文档解释(jar -help ...
- Python基础(十一)-面向对象
三种编程范式: 1.函数式编程:函数指数学意义上的函数 由于命令式编程语言也可以通过类似函数指针的方式来实现高阶函数,函数式的最主要的好处主要是不可变性带来的.没有可变的状态,函数就是引用透明(Ref ...