You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
逻辑与运算符由两个和号(&&)表示,有两个操作数,只有在两个操作数都为true时,结果才返回true,否则返回false
// 利用短路运算特性
1.可以使用逻辑与运算符来取代if结构
(a == b) && doSomething();
2.逻辑与运算符常常用于回调函数使用中
function fn(a){
a && a();
}
逻辑或
逻辑或运算符由两个竖线(||)表示,有两个操作数,只有在两个操作数都是false时,结果才返回false,否则返回true
1.逻辑或运算符常用于为变量设置默认值
function fn(p){
p = p || {};
}
位运算符
按位非(~)
按位非操作符由一个波浪线(~)表示,执行按位非的结果就是返回数值的反码。其本质是操作数的负值减1
var num1 = 25;
var num2 = ~num1;
console.log(num2);//-26
对一个整数两次按位非,可以得到它本身;对一个小数两次按位非,可以得到取整效果
console.log(~~3);//3
console.log(~~3.1);//3
声明语句包括变量声明和函数声明,分别使用var和function关键字
函数声明语句和函数定义表达式包含相同的函数名,但二者有所不同
// 变量声明语句
var f = function(x){return x+1;}
// 声明式语句
function f(x){return x+1;}
函数定义表达式只有变量声明提前了,变量的初始化代码仍然在原来的位置;
而函数声明语句的函数名称和函数体均提前,脚本中的所有函数和函数中所有嵌套的函数都会在当前上下文中其他代码之前声明,也就是说,可以在声明一个javascript函数之前调用它
// 这种只会提升变量, 函数体不会
console.log(f1(0));//Uncaught TypeError: f1 is not a function
var f1 = function(x){return x+1;}
console.log(f2(0));//1
function f2(x){return x+1;}
条件语句
if 语句;
switch (express)
// case的值不一定是常量,可以是变量或表达式
case value || express1:
doSomething
break;
default:
基础语法
介绍
动态: 在运行期间才去做数据类型检查
弱类型: 赋值时可以修改数据类型
解释型语言: 不需要进行编译可以直接运行
运行在浏览器端, 当然现在也可以运行在服务端的 node 环境下
基础
标识符&变量
标识符
: 就是一个名字,用来对变量、函数、属性、参数进行命名,或者用做某些循环语句中的跳转位置的标记变量(variable)
是一个用于保存值的占位符,可以通过变量名称来获得对值的引用推荐命名方式: 变量的命名要使用名词,而函数应该是动词+名称的形式
表达式
js 表达式有操作符合语句组成; 分为原始表达式和复杂表达式
原始表达式
原始表达式是表达式的最小单位, 分为字面量、关键字和变量;详细来说包括this关键字、标识符引用、字面量引用、数组初始化、对象初始化和分组表达式
复杂表达式
复杂表达式由原始表达式和操作符(operator)组合而成,包括属性访问表达式、对象创建表达式和函数表达式
对象创建表达式创建一个对象并调用一个函数初始化新对象的属性
new Object()
Object 构造函数为给定值创建一个对象包装器。如果给定值是 null 或 undefined,将会创建并返回一个空对象,否则,将返回一个与给定值对应类型的对象。
function Person(name) {
this.name = name
}
new Person('huhua') // 返回一个Person实例对象
严格模式
为了消除js语法的一些不合理、不严谨、不安全问题,减少怪异行为并保证代码运行安全
提高编译器效率,增加运行速度, 因此引入了严格模式
垃圾回收
垃圾回收机制的原理:找出那些不再继续使用的变量,然后释放其占用的内存,垃圾收集器会按照固定的时间间隔,或代码执行中预定的收集时间,周期性地执行这一操作
局部变量只在函数执行的过程中存在。而在这个过程中,会为局部变量在栈(或堆)内存上分配相应的空间,以便存储它们的值。然后在函数中使用这些变量,直到函数执行结束。此时,局部变量就没有存在的必要了。因此可以释放它们的内存以供将来使用。在这种情况下,很容易判断变量是否还有存在的必要;但并非所有情况下都这么容易就能得出结论
垃圾收集器必须跟踪哪个变量有用哪个变量无用,对于不再有用的变量打上标记,以备将来收回其所占用的内存。用于标识无用变量的策略通常有标记清除和引用计数两种
运算符
分类
算术运算符
算术运算符包括一元算术运算符和二元算术运算符两种
一元算术运算符
一元算术运算符用于一个单独的操作数,并产生一个新值。在javascript中,一元运算符具有很高的优先级,而且都是右结合(right-associative)
一元算术运算符包括一元加法(+)、一元减法(-)、递增(++)和递减(--)
二元算术运算符
加法运算有大量的特殊行为,不仅可以进行数值加法运算,也可以进行字符串连接
加法运算遵循如下规则:
相对于加法,减法就简单的多,只涉及到数字的减法运算。使用Number()转型函数将非数值类型转换为数值或NaN
乘法()
乘法操作符由一个星号()表示,用于计算两个数值的乘积,会通过Number()转型函数将非数值类型转换为数值或NaN
除法(/)
除法操作符由一个斜线(/)表示,执行第一个操作数除以第二个操作数的运算,也会通过Number()转型函数将非数值类型转换为数值或NaN
求模(%)
求模(余数)操作符是由一个百分号(%)表示,是第一个操作数除以第二个操作数的余数
关系运算符
===、!==、==、!=、<、<=、>、>= 8个关系运算符
不恒等运算符下的 两个操作数比较存在隐式转换
以 == 为例, 当两个操作数类型不同时:
逻辑运算符
位运算符
其他运算符
逗号运算符
逗号运算符是二元运算符,它的操作数可以是任意类型。它首先计算左操作数,然后计算右操作数,最后返回右操作数的值,用逗号运算符可以在一条语句中执行多个运算
void运算符
void是一元运算符,它出现在操作数之前,操作数可以是任意类型,操作数会照常计算,但忽略计算结果并返回undefined。由于void会忽略操作数的值,因此在操作数具有副作用的时候使用void来让程序更具语义
1.替代undefined
由于undefined并不是一个关键字,其在IE8-浏览器中会被重写,在高版本函数作用域中也会被重写;所以可以用void 0 来替换undefined
function t(){
var undefined = 10;
console.log(undefined);
}
t() // 10
语句
javascript程序无非就是一系列可执行语句的集合,javascript解释器依照语句的编写顺序依次执行。
The text was updated successfully, but these errors were encountered: