一、语法
1.1、区分大小写
JS中的一切都区分大小写,包括(变量名、函数名、操作符等),例如:
test!== Test
1.2、标识符
标识符,即变量、函数名、属性的名字,函数参数也算是变量的一种,因此函数参数也是标识符,标识符具有以下规则:
1、首字符必须是字母、下划线()、美元符号 2、其他字符可以是字母、下划线()、美元符号($)、数字
按照惯例,标识符一般采用驼峰命名方式,即首字母小写,剩余单词开头字母大写。例如:peopleAge 、peopleName 。
1.3、注释
JavaScript注释方法:
HTML注释方法:
<!-- HTML注释 -->
1.4、严格模式
启用方式:在需要执行严格模式条件的代码前加上"use strict"; ,例如:
function getAge(){
"use strict";
age = 14;
console.log(age);
}
function getName(){
"use strict";
let name = '';
name = 'web';
console.log(name);
}
二、变量
在ES6之前声明变量的方式只有var ,它具有以下特性: 1、属于松散类型 ,可以用来声明所有类型数据, 2、使用var 声明的变量只会在其作用域内有效,离开作用域就会被销毁。具有以下情况: 3、在非局部作用域内使用var声明语句声明的变量会作用于全局作用域 4、var 具有变量提升,即会将声明语句提升到该作用域头部,但未赋值,因此在声明前调用该变量并不会报错,而是返回一个undefined , A、局部变量声明
function _test(){
var testStr = 'hello'
}
_test();
console.log(testStr);
B、代码块内声明
{
var testStr = 'hello'
}
console.log(testStr);
C、先用后声明
console.log(testStr);
{
var testStr = 'hello'
}
var testStr;
console.log(testStr);
{
testStr = 'hello'
}
四、数据类型
数据类型又分为基本数据类型和引用数据类型,基本数据类型包括undefined、null、number、string、boolean。引用数据类型一般是指Object,但在ES6发布后又定义了几种数据类型:symbol、map、set。 对于简单类型数据,js提供了一个typeof方法用于检测变量的数据类型,具体如下:
const num = 0;
const str = "hello";
const str2 = undefined;
const obj = null;
const aa = true;
const object = {};
const array = []
const fn = function(){}
console.log(typeof num);
console.log(typeof str);
console.log(typeof str2);
console.log(typeof obj);
console.log(typeof aa);
console.log(typeof object);
console.log(typeof array);
console.log(typeof fn);
这里需要注意3个地方:
null 是一个空对象,因此typeof 的检测结果为object ;function 的检测结果会返回function ,并不是一个object ;Array 类型虽然是数组,但是在JavaScript 中我们认为他的类型是对象类型。
五、操作符
5.1 一元操作符
只能操作一个值的操作符叫一元操作符;
1、递增和递减
使用方法:a++,++a,a–,--a 它表达的意思就是对a进行加一的操作,但需要注意的是++和–的位置:
- ++或–在前表示先加或减再用
- ++或–在后表示先用再加或减
let a = 2;
console.log(a++)
console.log(++a)
console.log(a--)
console.log(--a)
++和–也可以运用到其他类型值上,但须遵循以下规范:
1、应用于一个包含有效数字字符的字符串时,先将其转换为数值,再执行++/–,该变量类型由字符串类型变为数值类型 2、应用于一个不包含数字字符的字符串时,将变量的值设置为NaN ,该变量类型由字符串类型变为数值变量; 3、应用于布尔值false 时,先将其转换为0,再执行++/–,该变量的类型由布尔值转换为数值; 4、应用于布尔值true 时,先将其转换为1,再执行++/–,该变量的类型由布尔值转换为数值; 5、应用于undefined 时,数值运算会返回NaN 5、在应用于对象时,会调用对象的valueOf() 方法取得一个可用值,然后再利用前面的规则,如果结果是NaN ,则再调用toString() 方法后再应用前面的规则,该变量类型将由对象变为数值
2、一元加和一元减运算符
在对非数值应用一元操作加减符时,该操作Number()转型函数一样对这个值进行转换;用法如下:
let a = 0;
a = +a;
a = -a;
需要注意的是上面的语法并没有进行加减运算,实际上只是进行了一个将变量的类型转换为数值类型的过程。
5.2 布尔操作符
1、逻辑非(!)
当对一个变量使用逻辑非操作后,无论变量是什么类型都会先将其变为布尔类型,再进行取反操作;
1、操作对象是一个对象,则返回false ; 2、操作对象是一个非空字符串,返回false ; 3、操作对象是一个空字符串,返回true ; 4、操作对象是0;返回true ; 5、操作对象是非0数值,返回false ; 6、操作对象是null ,返回true 7、操作对象是undefined ,返回true 8、操作对象是NaN ,返回true
逻辑非操作一次会将其转为布尔值再取反,那么连续使用两次其实就取到了当前对象的布尔类型值,相当于做了Boolean()转化;
2、逻辑与(&&)
它具有两个操作对象,使用方法是将两个操作对象分别放在&& 两边,例如:
a && b;
他的返回结果可以简单记忆为只有同时为真才返回true ,并返回后面的那个操作对象;其他情况皆是返回false ,并返回第一次最先碰见的布尔类型为false 的那个操作对象,并且遇见false 将立即停止执行逻辑与的后续代码。
3、逻辑或(||)
逻辑或和逻辑与的用法一直,都是两个操作对象将|| 包含住。 逻辑或可以理解为遇见操作对象为真则立即返回当前操作对象,后续的逻辑或比较不再执行
六、语句
很简单,没啥可记录的
七、函数
这里主要了解一下函数的传参原理(按值传递)这个可以参考我之前的文章看看以及JavaScript中没有函数重载,当然你也可以借助一些方法去实现这个。
|