zoukankan      html  css  js  c++  java
  • Javascript 概念类知识

    本文总结js中常用的知识,有些几乎用不到,或者属于设计缺陷,但是又必须知道,这些是我开发中总结的,如果有不正确的地方,请指出。

    个人代码习惯分享:命名尽量语义化但又比较特殊,这样会避免命名冲突,即使全局局部变量会属于不同域也不要使用同名,长一点没关系,不太会英文怎么办?拼音!

    一.变量

    1.)在非严格模式下,全局变量不用var也可以直接用,但是这样并不好,会造成歧义,阅读会困难。所以正规的写法是提前声明。

    2.)有一个概念叫变量提升,在函数内部,所有的变量都会被提升到函数体上部声明。

    function upvar(){
    console.log(x);
    var x = 0;
    }
    upvar();//打印undefined

    变量声明在打印之后,即使在严格模式下也不会报错,原因是js机制把变量声明提前到函数体第一行,但是未赋值,所以上面的函数相当于:

    function upvar(){
    var x;
    console.log(x);
    x = 0;
    }
    upvar();//打印undefined

    那么如果全局变量跟函数内局部变量同名呢?结果也是一样的。函数优先扫描内部函数。

    var a = 2;
    function samenameA(){
    	console.log(a)
    	var a = 3;
    }
    samenameA();//打印undefined
    

      

    变量使用必须提前声明,使用前必须提前赋值。所以在我看来除非脑抽筋,不然不会写出这种代码。属于记住概念即可。

    3.)this指向,取决于调用的方式(详见:Javascript的this用法

    在全局范围下,this指向window,也就是说可以使用this.变量调用全局变量,this.函数调用全局函数。

    在对象内,指向当前对象。

    在事件内,指向事件dom。

    二.数据类型

    JavaScript有五种方法可以确定一个值到底是什么类型,分别是typeof运算符,constructor法,instanceof运算符,Object.prototype.toString方法以及Array.isArray法.

    1.)js有五中基本类型,一种引用类型

    基本类型:String、Boolean、Number、undefind、null

    引用类型:Object(Array、Date、RegExp、Function)

    基本包装类型:Boolean、 Number、String

    单体内置对象:Global对象、Math对象

    基本类型是简单值,所见即所得,引用类型是复杂类型,其值是经过计算得到的。

    2.)类型内置方法

    object(所有引用对象都有继承):valueOf()、toLocaleString()、toString()

    String方法:charAt()、charCodeAt()、concat()、slice()、 substr()、substring()、indexOf()、lastIndexOf()、trim()、toLowerCase()、 toLocaleLowerCase()、 toUpperCase()、toLocaleUpperCase()、match()、replace()、localeCompare()、fromCharCode()

    substr,substring,slice解释

    {

    str.substr(start,[,length])

    start开始提取字符的位置。如果为负值,则被看作 strLength + start,其中 strLength 为字符串的长度(例如,如果 start 为 -3,则被看作 strLength-3)。
    length可选。提取的字符数

    str.substring(indexstart,[,indexend])

    如果参数小于0,则为0、如果start大于end,则调转参数位置、如果参数大于string.length,则等于string.length、如果相等则返回空

    str.slice(beginslice,[,endslice])

    beginSlice从该索引(以 0 为基数)处开始提取原字符串中的字符。如果值为负数,会被当做 sourceLength + beginSlice 看待,这里的sourceLength 是字符串的长度 (例如, 如果beginSlice 是 -3 则看作是: sourceLength - 3)endSlice可选。在该索引(以 0 为基数)处结束提取字符串。如果省略该参数,slice会一直提取到字符串末尾。如果该参数为负数,则被看作是 sourceLength + endSlice,这里的 sourceLength 就是字符串的长度(例如,如果 endSlice 是 -3,则是, sourceLength - 3)。

    }

    Boolean:true false 用typeof操作符可以做一些操作

    Number:toFixed()、toExponential()、toPrecision()

    Array:isArray()、push()、pop()、shift()、unshift()、reverse()、sort()、concat()、splice()、indexOf()、lastIndexOf()、every()、filter()、forEach()、map()、some()、reduce()、reduceRight()

    Date:Date.parse()、 Date.UTC()

    Global:isNaN()、isFinite()、parseInt()、parseFloat()、encodeURI、encodeURIcomponent()、decodeURI、decodeURIcomponent()、eval()

    Math:Math.max()、Math.min()、Math.ceil()、Math.random()、Math.abc()、Math.exp()、Math.log()、Math.pow()、Math.sqrt()、Math.acos()、Math.asin()、Math.atan()、Math.atan2()、Math.cos()、Math.sin()、Math.tan()

    三.对象

    创建对象的方法

    new、{}、object.create()

    工厂模式、构造函数模式、原型模式、组合构造函数原型模式、动态原型模式

    待更... 

  • 相关阅读:
    BZOJ2303:[APIO2011]方格染色(并查集)
    BZOJ1116:[POI2008]CLO(并查集)
    BZOJ4011:[HNOI2015]落忆枫音(DP,拓扑排序)
    洛谷1387 最大正方形
    洛谷 P1858 多人背包
    vijos 1085 Sunnypig闯三角关
    vijos 1030 重叠的方框
    codevs 1001 舒适的路线 WK
    1266. [NOIP2012] 借教室
    codevs 2370 小机房的树
  • 原文地址:https://www.cnblogs.com/benu/p/5724148.html
Copyright © 2011-2022 走看看