代码规范:
-
变量名推荐使用驼峰法来命名(lowerCamelCase)
-
变量名不要以 $ 作为开始标记,会与很多 JavaScript 库冲突
-
通常运算符 ( = + - * / ) 前后需要添加空格
-
通常使用 4 个空格符号来缩进代码块(不推荐使用 TAB 键来缩进,因为不同编辑器 TAB 键的解析不一样)
-
一条语句通常以分号作为结束符(可选)
-
复杂语句的通用规则:
- 将左花括号放在第一行的结尾。
- 左花括号前添加一空格。
- 将右花括号独立放在一行。
- 不要以分号结束一个复杂的声明。
-
对象定义的规则:
- 将左花括号与类名放在同一行。
- 冒号与属性值间有个空格。
- 字符串使用双引号,数字不需要。
- 最后一个属性-值对后面不要添加逗号。
- 将右花括号独立放在一行,并以分号作为结束符号。
1、数据类型
值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol。
引用数据类型:对象(Object)、数组(Array)、函数(Function)。
字符串:单引号/双引号引用的任意文本。“test”、‘test’
数字和字符串相加,结果为字符串
null和undefined:值相等,类型不相等
null表示一个空对象引用,undefined是一个没有设置值的变量,是所有没有赋值变量的默认值
var person = null; // 值为 null(空), 但类型为object
var person = undefined; // 值为 undefined, 类型为 undefined
typeof() //返回数据类型
布尔值:true、false
2、注释
单行注释:双斜杠 // 后的内容将会被浏览器忽略
var length = 16; // Number 通过数字字面量赋值
多行注释:以 /* 开始,以 */ 结尾
/* 注释注释注释
此行也不会执行 */
3、let声明变量和var声明变量的区别
变量:用于存储信息的"容器"。
let允许你声明一个作用域被限制在块级中的变量、语句或者表达式。在Function中局部变量推荐使用let变量,避免变量名冲突。
var声明的变量的作用域是整个封闭函数。
https://blog.csdn.net/nfer_zhuang/article/details/48781671
4、作用域
可访问变量,对象,函数的集合。
局部变量:在函数中用var声明的变量
全局变量:在函数外用var声明的变量,没有声明就使用的变量默认为全局变量
5、比较运算符
=== 为绝对相等,即数据类型与值都必须相等。
所有的 JavaScript 对象都会从一个 prototype(原型对象)中继承属性和方法
Date 对象从 Date.prototype 继承。
Array 对象从 Array.prototype 继承。
Person 对象从 Person.prototype 继承
6、json与js对象
json是js对象的字符串表示方法。json本质是一个字符串
var obj = {a: ‘Hello’, b: ‘Java Script’}; //这是一个js对象
var json = ‘{a: ‘Hello’, b: ‘Java Script’}’; //这是一个json字符串
将json字符串转换成js对象,使用JSON.parse()方法
var JSON.parse(’{a: ‘Hello’, b: ‘Java Script’}’); //结果是一个对象,{a: ‘Hello’, b: ‘Java Script’}
将js对象转换成json,使用JSON.stringify()方法
var JSON.stringify({a: ‘Hello’, b: ‘Java Script’}); //结果是一个JSON格式的字符串,’{a: ‘Hello’, b: ‘Java Script’}’
7、数字(Number)对象
toExponential() 返回一个数字的指数形式的字符串,如:1.23e+2
toFixed() 返回指定小数位数的表示形式
var a=123;
b=a.toFixed(2); // b=“123.00”
toPrecision() 返回一个指定精度的数字。如下例子中,a=123 中,3会由于精度限制消失:
var a=123;
b=a.toPrecision(2); // b=“1.2e+2”
8、字符串(String)对象
var str=‘hello’;
str.length //返回字符串的长度
str.indexOf() //定位字符串中某一个指定的字符首次出现的位置,如果没找到返回-1
str.lastIndexOf() //在字符串末尾开始查找字符串出现的位置
str.match(“ll”) //用来查找字符串中特定的字符,并且如果找到的话,则返回这个字符
str.split("|") //使用 | 分隔字符串
str.trim() //删除字符串的头尾空白符,空白符包括:空格、制表符 tab、换行符等其他空白符等。不会改变原字符串,不适用于 null, undefined, Number 类型
str.subString(from,to) //提取字符串中介于两个指定下标之间的字符,返回结果包括开始处的字符,不包括结尾处的字符,to可选,省略该参数,那么返回的子串会一直到字符串的结尾
9、日期(Date)对象
getTime() // 返回从 1970 年 1 月 1 日至今的毫秒数
getDay() //从Date 对象返回一周中的某一天 (0 ~ 6)
getDate() //从Date对象返回一个月中的某一天 (1 ~ 31)
toUTCString() //根据世界时 (UTC) 把 Date 对象转换为字符串,‘Thu, 29 Jul 2021 10:01:14 GMT’
var myDate=new Date(); //设置一个5天后的日期,如果增加天数会改变月份或者年份,那么日期对象会自动完成这种转换
myDate.setDate(myDate.getDate()+5);
10、数组(Array)对象(用于在变量中存储多个值)
①:创建一个数组,有如下3种方式
var myBooks = [“math”,“english”,“chinese”];
var myBooks = new Array(“math”,“english”,“chinese”);
var myBooks = new Array();
myBooks[0] = math;
myBooks[1] = english;
myBooks[2] = chinese;
②:可以指定数组名及索引号码访问数组中的元素
var name = myBooks[0]; //访问数组myBooks的第一个元素
③:修改数组中元素的值
myBooks[0] = “java”; //修改数组myBooks的第一个元素为java
④:数组中可以包含对象元素、函数、数组
⑤:常用的数组的属性、方法
myBooks.length //数组中元素的个数
myBooks.indexOf(“english”,0) // 从0开始检索,第一次检索到"english" 的索引值,没有返回-1
array1.concat(array2,array3,…,arrayX) //连接2个或多个数组,返回一个新的数组,不会改变原来的数组;
array1.filter(function(currentValue,index,arr), thisValue) // currentValue必须,当前元素的值;返回数组,包含了符合条件的所有元素。如果没有符合条件的元素则返回空数组。array1中的每个元素都执行一遍函数function,符合条件,则返回
array1.forEach(function(currentValue,index,arr), thisValue) //currentValue必须,当前元素的值;用于调用数组的每个元素,并将元素传递给回调函数。返回值:undefined
array1.map(function(currentValue,index,arr), thisValue) //currentValue必须,当前元素的值;返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。原数组不变
11、算数(Math)对象
① Math.round(X); 方法: 可把一个数字X四舍五入为最接近的整数 ,X只能为数值 用法:Math.round(4.3); 输出 4 ; Math.round(2.50); 输出 3
② Math.random() ; 方法:返回介于 0(包含) ~ 1(不包含) 之间的一个随机数
③Math.floor(x); 方法:返回小于等于x的最大整数(向下取整),x可以为任意数值或表达式; Math.(4.8); 输出4; Math.floor((Math.random()*100)+1); 输出1~100之间的随机整数,并向下取整
12、代码块
以左花括号开始,以右花括号结束。代码块的作用是一并地执行语句序列。
代码换行使用反斜杠 \ document.write("你好 \
北京!");
13、函数(function)
parseInt() 函数:parseInt(string, radix) 解析一个字符串,并返回一个整数。 https://www.runoob.com/jsref/jsref-parseint.html
Object.keys() :返回一个数组 ,传入字符串,返回索引;传入对象,返回属性名
14、JavaScript用法
① 使用之间的 JavaScript 代码。
② 需要使用外部文件时,在
③ 输出数据的方式:
window.alert() 弹出警告框;
document.write() 将内容写入HTML文档中; document.write(Date());
innerHTML 写入到HTML元素; document.getElementById(“demo”).innerHTML = “段落已修改。”;
console.log() 写入浏览器的控制台;
④ switch语句; break 来阻止代码自动地向下一个 case 运行
switch(n)
{
case 1:
执行代码块 1
break;
case 2:
执行代码块 2
break;
default:
与 case 1 和 case 2 不同时执行的代码
}
显示今天的星期名称:
var d = new Date().getDay();
switch (d)
{
case 0:x ="今天是星期日";
break;
case 1:x ="今天是星期一";
break;
case 2:x ="今天是星期二";
break;
case 3:x ="今天是星期三";
break;
case 4:x ="今天是星期四";
break;
case 5:x ="今天是星期五";
break;
case 6:x ="今天是星期六";
break;
}
⑤ 循环
For 循环:语句1(代码块)开始前执行,初始化循环中所用的变量 (var i=0);语句2定义运行循环(代码块)的条件(i < 5);语句3 在循环(代码块)已被执行后执行(i ++ )
希望创建循环时使用,循环代码块一定的次数,适合遍历数组、字符串等
for (语句 1; 语句 2; 语句 3)
{
被执行的代码块
}
For/In循环: 会自动跳过那些没被赋值的元素
遍历对象的属性,针对每个属性执行一次
for (variable in object)
{
执行的代码……
}
While循环:在指定条件为真时循环执行代码块
遍历数组的时,如果数组中有 0,null,false,undefined 或者空字符串等在 js 中被认为等价于 false 的值,会提前结束遍历,可以修改条件为判断数组长度可避免该问题
while (条件)
{
执行的代码
}
do/While循环:while 循环的变体。该循环会在检查条件是否为真之前执行一次代码块,然后如果条件为真的话,就会重复这个循环,代码至少会执行一次。
别忘记增加条件中所用变量的值,否则循环永远不会结束!
do
{
执行的代码
}
while (条件) ;