前端


CSS

Javascript

Javascript 三大部分

  1. ECMAScript (JS 的语法和基本对象)
  2. DOM (文档对象模型:处理网页内容的方法和接口)
  3. BOM (浏览器对象模型:与浏览器交互的方法和接口)

Javascript 特点

解释性语言:语言分为两种

  1. 解释性语言:翻译一行执行一行,不会生成文件
    优点:可以跨平台(windows linux )
    缺点:编译稍微慢

  2. 编译性语言:翻译过程为通篇翻译,看完一行,看完第二行,看完全部,生成翻译完的文件,并且执行翻译完的文件( 列如 C C++ )
    优点:编译快
    缺点:不可以跨平台

单线程:线程分为两种

  1. 单线程(同步):同一时间只能做一件事
  2. 多线程(异步):同一时间做多件事

数据类型 —- 值类型(分为两类)

栈数据(原始值,基本数据类型):Number   String   Boolean   undefined   null   (五大类)
原始值存在栈里面:简单数据类型的值是储存在栈中,当把一个变量传递给另一个变量时,是把一个栈中的东西复制到另一个到栈中,并且这两个变量互不影响,修改其中的变量值时,不会改变另外一个变量的结果。

var a = 1;
var b = a;
a = 2;
console.log(a);   //2
console.log(b);   //1

堆数据(引用值): array   object   function …..
引用值大致存在堆里面:引用值(复杂数据类型)是把引用变量的名称(内存地址)存储在栈中,但是把其实际对象存储在堆中,栈中的内存地址指向堆中的实际对象,当把引用对象传递给另一个变量时,复制的其实是指向实际对象的指针(内存地址),此时两者指向的是同一个数据,若通过方法改变其中一个变量的值,则访问另一个变量时,其值也会跟着改变,  因为 JavaScript 中对象的赋值是默认引用赋值的。

var a = [1];
var b = a;
a.push(2);
console.log(a);   //[1, 2]
console.log(b);   //[1, 2]

null 和 undefined 的区别

在一些情况下,null 和 undefined 几乎是一样的。例如:

if (!undefined) {// undefined is false
    console.log('undefined is false');
}

if (!null) {// null is false
    console.log('null is false');
}

if(undefined == null) {// true
    console.log('undefined == null');
}

但是 null 和 undefined 仍然存在一些区别: 1.类型不一样
null 是一个 object!所以,我们可以这么理解,null 是一个对象的占位符,表示这个对象还未初始化,是个”空对象”;而 undefined 表示压根没人对这个变量做定义,没人知道这到底是个什么玩意儿。

console.log(typeof undefined); //undefined
console.log(typeof null); //object

2.转为数值时,值不一样
undefined 转为数值 NaN,null 转为数值 0。

console.log(Number(undefined)); //NaN
console.log(undefined + 10);//NaN

console.log(Number(null)); //0
console.log(null + 10); //10

null 的典型用法
(1) 作为函数的参数,表示该函数的参数不是对象。

function testObj(obj) {
    if(null == obj) {
        // 异常处理,比如创造一个新对象
    }
}

(2) 作为对象原型链的终点。

Object.getPrototypeOf(Object.prototype)
// null

undefined 的典型用法

// (1)变量被声明了,但没有赋值时,就等于undefined。
var i;
i // undefined

//(2) 调用函数时,应该提供的参数没有提供,该参数等于undefined。
function f(x) {
    console.log(x)
}
f() // undefined

// (3)对象没有赋值的属性,该属性的值为undefined。
var  o = new Object();
o.p // undefined

//(4)函数没有返回值时,默认返回undefined。
var x = f();
x // undefined

运算符优先级

优先级      运算符      顺序   
 1        小括号       ()
 2       一元运算符      ++   –   !
 3       算术运算符      先  * / %  后  + -
 4       比较运算符      >   >=  <  <=
 5       相等运算符      ==   !=  ===  !== 
 6       逻辑运算符      先   &&  后   ||
 7       赋值运算符      =

与 或 非(逻辑运算符)

用来进行布尔值运算的运算符,其返回值也是布尔值(后续开发中常用于多个条件判断)
underfined      null       NaN     “”      0      false
&& ( 与 )——短路语句
如果表达示为假,则会返回假的第一个假值,如果表达式都为真,则会返回最后那个真值( 碰到假就会返回该值 )

var  a  =  1  &&  2  &&  3;                    //3
var  a  =  1  &&  0  &&  3;                    //0

//短路作用 :确保代码能够正常执行,常用于后端获取数据后进行判断
if(data && data.下面的某个属性) {
    ...执行代码段
}

|| ( 或 )——兼容语句
如果表达式为真,则会返回第一个真值,如果表达式都为假,则会返回最后那个假值(碰到真就会返回该值)

var  a  =  2  ||  3;                           //2
var  a  =  2  ||  0  ||  3 ;                   //2
var  a  =  0  ||  false ;                      //false

//兼容作用 :常用于确保代码能够多条件执行
var event  =  e  ||  window.event;

!(非)—–取反符
用来取布尔值在取反

var  a  =  !"";                                //true
var  a  =  !123;                               //fals

var obj = {id:1, name:"marry"}
    if(!!obj || id !=="") {
     console.log(obj.name)
    }

React

其他


  目录