JavaScript 入门(新)


//不会一个个知识点的记笔记,只去记录一些比较坑的点或者比较特别的点

1、三个基本概念(变量、值、类型)

       *变量没有类型,值有类型

2、变量声明关键词:

                let ,

              var,

              const(使用const时,会使变量和值之间的引用关系不能再改变。而js中的原子值无法改变)

3、类型:7种(symbol ,null ,undefined ,number ,string ,object(非原子类型) , boolean )

4、typrof :查看变量类型

typeof 的三种例外:

       null:object

       被声明,未赋值,undefined

       typeofa(未被声明的,不会报错,只会返回undefined)

 

5、number(8个字节,64位)     

控制有效位

toFixed()//小数点后

              toPrecision()//有效位

       //一个奇怪的地方0.1+0.2(可以用Number.EPSILON)

       NaN(不与任何值相等,包括自己

       Number.MAX_VALUE(当超过后,会靠近最接近的数)

       Infinity(无穷大)

       +0-0(如何区分;==0&&/Ifinity==Infinity

       Object.is(a,b)//甚至可以区分0,-0,NaN

eg:var a = NaN,

      b = NaN;

console.log(Object.is(a, b))

判断整数:Number.isInteger(61)//判断一个数是不是整数

6、String类型(16个无符号整形)

       一些方法:

              concat:连接

              indexOf:返回一个子字符串

              charAt:获取指定位置的字符

                     []简写模式

              length:长度

              toUpperCase:大写

       声明后,就不再改变//变了,就不是自己了

       使用双引号

              转义:\

                '""'

              模板字符串(不需要转义):`` 

let a='dads\nfdf'
let b=`dadas
fas`

使用变量: ${a+b}

let c=`我想要知道${a+b}`

 

7、object类型

       1)创建 

对象字面量、constructor

对象字面量

 
    let o={
    name:'da',
    age:18
}

constructor

let o =new Object()

o.name=’malin’

o.age=18

       2)访问value 

obj.key//点操作符    

obj[key] //括号

//第二种使用更广一些,比如key中间有空格,但是啰嗦

       3)删除 delete

       4)ES6中提供更简单的方式

 letname = 'nalin'

       letage = 11

       letperson = {

      name,

        age

       }

       console.log(person)

8、build-in object(boolean string number)//封装好的原生方法

**使用constructor,绝大多数都需要new

**自动装箱、自动拆箱

       如果build-in不加new时,实现强制类型转换

1)封装了boolean的object的一个奇怪特性,object是一种像是真的值,取反会变成假

let a = new Boolean(false)

if (!a) {

   console.log(1111);

 

} else {

    console.log(222222);

}

9、array

1)创建

var a = [0, 1]

a[3] = 1

console.log(a)//会有空洞

2)方法:push

       pop

       unshift

       shift

       splice(a,b)//删了a-b之间的东西

splice(a,b,‘a’,‘da’)//删了a-b之间的东西,然后把后面的添加进去(如果放入的数据多于删掉的,会将之后的占用)

       slice(a,b)切片

       length:改变length可以截断数组

强制类型转换后为false:共6种

“N0fun”

N:NaN

0:

false:

undefined:

n:null

""

 

####################################################################################################################################

array的一些方法:

       poppush

       shuiftunshift

       splice:删除  

       slice(start,end)

              复制数组:ab=a.slice()

一些build_in objects

function

  1)创建:

       声明: function fun(){}

       函数表达式:var f=function(){}

       箭头函数:()=>{}

       new(不建议用)

      

       函数声明:

              参数:各种奇怪,

                     可选

       函数表达式:函数名可选

       箭头函数:

              参数为一:括号变成可选

 

let person={

   say(){

       console.log('hello')

    }

}

10、symbol类型:(提供一种与存储无关的方式来表达一个符号)

       动机:为对象加入 private属性

创建:

       let  my=Symbol('sdada');不需要,也不能使用new

              返回的是原子类型,而不是

  letmys=Symbbol('dada')

       letmobj=Object(mys)

       letobj={}

       obj[my]='dadadas'

使用:symbol1==symbol     symbol1!=symbol2(两次调用,不可能返回同一个值)

共享 symbol 类型的值

       es6全局注册表

       lets=Symbol.for('sdada')//查找是否存在,存在?不存在就创建

 

 

 

11、prototype:原型

每个obj关联仅关联一个Prototype

prototype本身必须是一个object或者null

内部状态:放在一个槽中

对象之间通过原型关系,形成原型链

一个object包含:

三部分 :

       properties:完全控制权

       internalslots:内部槽  (无法增加或减少槽数,但是可以改变)

       internalmethods:(无法改变

原型链:

       创建时关联:

              letobj=Object.create(proto)

       创建后关联:

              Object.setPrototypeOf(obj,proto)

 

优点:动态性更强//像其他语言的继承,可以具有多态性***但是不可以重载

 

如何查找key:向上查找,没有的话,返回undefined

 

 

12、变量作用域:

程序主函数

Global object(全部对象)

       NaN,undefined都是一个key

全局对象:

值属性:Infinity,NaN ,undefined…

函数属性:isNaN(number),eval(x),parseFloat(string) …

构造函数属性:Array,Boolean, String, Number…

其他属性:Math,JSON…

邪恶特性:

       全局(如果声明变量的时候,什么都不用)

       全局变量不是变量

解决方法:

       "usestrict";

        a=1

        console.log('hello')

变量作用域:

       var函数作用域

//微编译

变量提升(只把声明提升到最前面)

局部变量会这样,函数也会这样

****变量提升只提升函数名 而函数提升会提升整个函数体 注意:函数提升在变量提升上面。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值