python大神-javascript知识

基础了解:浏览器内置了JavaScript语言的解释器(实现动画效果)

一、以什么方式存在

  1、在html文档使用的方式

1 <!-- 方式一 --> 
2 <script type"text/javascript" src="JS文件"></script> 
3    
4 <!-- 方式二 --> 
5 <script type"text/javascript"> 
6     Js代码内容 
7 </script>

  2、js存放位置

1 •HTML的head中
2 •HTML的body代码块底部(推荐)

二、变量

基本了解:有var代表局部变量,没有声明则是全局变量

 1 <script type="text/javascript"> 
 2  
 3     // 全局变量 
 4     name = 'seven'; 
 5  
 6     function func(){ 
 7         // 局部变量 
 8         var age = 18; 
 9  
10         // 全局变量 
11         gender = ""
12     } 
13 </script>
变量

三、数据类型

基本了解:数据类型有两类:1)原始类型;2)对象类型:

1 •原始类型 
2   •数字
3   •字符串
4   •布尔值
5 •对象类型 
6   •数组
7   •“字典”
8   •...
// null、undefined
null是JavaScript语言的关键字,它表示一个特殊值,常用来描述“空值”。
undefined是一个特殊值,表示变量未定义。

  1、数字(number)

基本了解:JavaScript中不区分整数值和浮点数值,JavaScript中所有数字均用浮点数值表示。

转换:

•parseInt(..)    将某值转换成数字,不成功则NaN
•parseFloat(..) 将某值转换成浮点数,不成功则NaN
特殊值:

• NaN,非数字。可使用 isNaN(num) 来判断。
•Infinity,无穷大。可使用 isFinite(num) 来判断。
常量

Math.E
常量e,自然对数的底数。

Math.LN10
10的自然对数。

Math.LN2
2的自然对数。

Math.LOG10E
以10为底的e的对数。

Math.LOG2E
以2为底的e的对数。

Math.PI
常量figs/U03C0.gif。

Math.SQRT1_2
2的平方根除以1。

Math.SQRT2
2的平方根。

静态函数

Math.abs( )
计算绝对值。

Math.acos( )
计算反余弦值。

Math.asin( )
计算反正弦值。

Math.atan( )
计算反正切值。

Math.atan2( )
计算从X轴到一个点的角度。

Math.ceil( )
对一个数上舍入。

Math.cos( )
计算余弦值。

Math.exp( )
计算e的指数。

Math.floor( )
对一个数下舍人。

Math.log( )
计算自然对数。

Math.max( )
返回两个数中较大的一个。

Math.min( )
返回两个数中较小的一个。

Math.pow( )
计算xy。

Math.random( )
计算一个随机数。

Math.round( )
舍入为最接近的整数。

Math.sin( )
计算正弦值。

Math.sqrt( )
计算平方根。

Math.tan( )
计算正切值。
数值计算

  2、字符串(string)

 1 obj.length                           长度 
 2   
 3 obj.trim()                           移除空白 
 4 obj.trimLeft() 
 5 obj.trimRight) 
 6 obj.charAt(n)                        返回字符串中的第n个字符 
 7 obj.concat(value, ...)               拼接 
 8 obj.indexOf(substring,start)         子序列位置 
 9 obj.lastIndexOf(substring,start)     子序列位置 
10 obj.substring(from, to)              根据索引获取子序列 
11 obj.slice(start, end)                切片 
12 obj.toLowerCase()                    大写 
13 obj.toUpperCase()                    小写 
14 obj.split(delimiter, limit)          分割 
15 obj.search(regexp)                   从头开始匹配,返回匹配成功的第一个位置(g无效) 
16 obj.match(regexp)                    全局搜索,如果正则中有g表示找到全部,否则只找到第一个。 
17 obj.replace(regexp, replacement)     替换,正则中有g则替换所有,否则只替换第一个匹配项, 
18                                      $数字:匹配的第n个组内容; 
19                                      $&:当前匹配的内容; 
20                                      $`:位于匹配子串左侧的文本; 
21                                      $':位于匹配子串右侧的文本 
22                                      $$:直接量$符号
View Code

  3、布尔类型(boolean)

布尔类型仅包含真假,与Python不同的是其首字母小写。

•==      比较值相等
•!=       不等于
•===   比较值和类型相等
•!===  不等于
•||        或
•&&      且

  4、数组(与python的列表类似)

 1 obj.length          数组的大小 
 2   
 3 obj.push(ele)       尾部追加元素 
 4 obj.pop()           尾部获取一个元素 
 5 obj.unshift(ele)    头部插入元素 
 6 obj.shift()         头部移除元素 
 7 obj.splice(start, deleteCount, value, ...)  插入、删除或替换数组的元素 
 8                     obj.splice(n,0,val) 指定位置插入元素 
 9                     obj.splice(n,1,val) 指定位置替换元素 
10                     obj.splice(n,1)     指定位置删除元素 
11 obj.slice( )        切片 
12 obj.reverse( )      反转 
13 obj.join(sep)       将数组元素连接起来以构建一个字符串 
14 obj.concat(val,..)  连接数组 
15 obj.sort( )         对数组元素进行排序
常见功能:

 四、其他

  1、序列化

•JSON.stringify(obj)   序列化
•JSON.parse(str)        反序列化

  2、转义

•decodeURI( )                   URl中未转义的字符
•decodeURIComponent( )   URI组件中的未转义字符
•encodeURI( )                   URI中的转义字符
•encodeURIComponent( )   转义URI组件中的字符
•escape( )                         对字符串转义
•unescape( )                     给转义字符串解码
•URIError                         由URl的编码和解码方法抛出

  3、eval(等同于python中eval和exec的合集)

•eval() 
•EvalError   执行字符串中的JavaScript代码

  4、正则表达式

1)、定义正则表达式

•/.../  用于定义正则表达式
•/.../g 表示全局匹配
•/.../i 表示不区分大小写
•/.../m 表示多行匹配
JS正则匹配时本身就是支持多行,此处多行匹配只是影响正则表达式^和$,m模式也会使用^$来匹配换行的内容)
1 var pattern = /^Java\w*/gm; 
2 var text = "JavaScript is more fun than \nJavaEE or JavaBeans!"; 
3 result = pattern.exec(text) 
4 result = pattern.exec(text) 
5 result = pattern.exec(text)
例子

注:定义正则表达式也可以  reg= new RegExp()

  2)、匹配

    JavaScript中支持正则表达式,其主要提供了两个功能:

    a. test(string)     检查字符串中是否和正则匹配(没有匹配到不会有返回值)

n = 'uui99sdf'
reg = /\d+/ 
reg.test(n)  ---> true
 
# 只要正则在字符串中存在就匹配,如果想要开头和结尾匹配的话,就需要在正则前

    b. exec(string)    获取正则表达式匹配的内容,如果未匹配,值为null,否则,获取匹配成功的数组。

容,如果未匹配,值为null,否则,获取匹配成功的数组。 
 
非全局模式 
    获取匹配结果数组,注意:第一个元素是第一个匹配的结果,后面元素是正则子匹配(正则内容分组匹配) 
    var pattern = /\bJava\w*\b/; 
    var text = "JavaScript is more fun than Java or JavaBeans!"; 
    result = pattern.exec(text) 
 
    var pattern = /\b(Java)\w*\b/; 
    var text = "JavaScript is more fun than Java or JavaBeans!"; 
    result = pattern.exec(text) 
 
全局模式 
    需要反复调用exec方法,来一个一个获取结果,直到匹配获取结果为null表示获取完毕 
    var pattern = /\bJava\w*\b/g; 
    var text = "JavaScript is more fun than Java or JavaBeans!"; 
    result = pattern.exec(text) 
 
    var pattern = /\b(Java)\w*\b/g; 
    var text = "JavaScript is more fun than Java or JavaBeans!"; 
    result = pattern.exec(text)

  3)字符串中相关方法

obj.search(regexp)                   获取索引位置,搜索整个字符串,返回匹配成功的第一个位置(g模式无效) 
obj.match(regexp)                    获取匹配内容,搜索整个字符串,获取找到第一个匹配内容,如果正则是g模式找到全部 
obj.replace(regexp, replacement)     替换匹配替换,正则中有g则替换所有,否则只替换第一个匹配项, 
                                        $数字:匹配的第n个组内容; 
                                          $&:当前匹配的内容; 
                                          $`:位于匹配子串左侧的文本; 
                                          $':位于匹配子串右侧的文本 
                                          $$:直接量$符号

5、时间处理

JavaScript中提供了时间相关的操作,时间操作中分为两种时间:

•时间统一时间
•本地时间(东8区)
更多操作参见:http://www.shouce.ren/api/javascript/main.html

 五、语句与异常

  1、条件语句

JavaScript中支持两个中条件语句,分别是:if (与python用法类似)和 switch

 if(条件){
 
    }else if(条件){
         
    }else{
 
    }
if
switch(name){
        case '1':
            age = 123;
            break;
        case '2':
            age = 456;
            break;
        default :
            age = 777;
    }
switch

   2、循环语句(索引的循环)

var names = ["alex", "tony", "rain"];
 
for(var i=0;i<names.length;i++){
    console.log(i);
    console.log(names[i]);
}
方式one
var names = ["alex", "tony", "rain"];

for(var index in names){
    console.log(index);
    console.log(names[index]);
}
方式two
while(条件){
    // break;
    // continue;
}
while

  3、异常处理

try { 
    //这段代码从上往下运行,其中任何一个语句抛出异常该代码块就结束运行 
} 
catch (e) { 
    // 如果try代码块中抛出了异常,catch代码块中的代码就会被执行。 
    //e是一个局部变量,用来指向Error对象或者其他抛出的对象 
} 
finally { 
     //无论try中代码是否有异常抛出(甚至是try代码块中有return语句),finally代码块中始终会被执行。 
}

注:主动跑出异常 throw Error('xxxx')

六、函数

1、基本函数(有三类)

 1 // 普通函数 
 2     function func(arg){ 
 3         return true; 
 4     } 
 5            
 6 // 匿名函数 
 7     var func = function(arg){ 
 8         return "tony"; 
 9     } 
10    
11 // 自执行函数 
12     (function(arg){ 
13         console.log(arg); 
14     })('123')

2、函数与全局的作用域(重点)

基本了解:每个函数都有自己的作用域(当函数存在时,就已经存在作用域了)

切记:所有的作用域在创建函数且未执行时候就已经存在。

例子:(每个函数里的变量是自己的一个域)

function func(){
              for(i=0;i<3;i++){
                  setInterval(function(){   # setInterval定时器不影响函数的运行,定时器有自己的解析器;
                      console.log(i);        
                  },1000)
              }
          }
          func();
          
      输出的结果是:3(每秒出现一次3)
      
      例子2:
      <div id="btns">
          <input type="button" value="点我1" />
          <input type="button" value="点我2" />
          <input type="button" value="点我3" />
      </div>
      
      <script>
          var btns = document.getElemetById('btns').chidren;
          for(var j=0;j<btns.length;j++){
              var current_input = btns[j];
              current_input.onclick = funtion(){        # 1)点击按钮执行funtion函数,j在funtion函数作用域里找不到值;
                  alert(j)                                # 2)j往父集找,这时for循环已经执行完,j=3;
              }
          }
      </script>
View Code

3、闭包

基本了解:指嵌套函数被传入了变量而没有执行。

闭包是指可以包含自由(未绑定到特定对象)变量的代码块。

「闭包」,是指拥有多个变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。

闭包是个函数,而它「记住了周围发生了什么」。表现为由「一个函数」体中定义了「另个函数」

由于作用域链只能从内向外找,默认外部无法获取函数内部变量。闭包,在外部获取函数内部的变量。
模糊概念
function f2(){ 
    var arg= [11,22]; 
    function f3(){ 
        return arg; 
    } 
    return f3; 
} 
 
ret = f2(); 
ret();
例子

4、面向对象

 1 function Foo (name,age) { 
 2     this.Name = name; 
 3     this.Age = age; 
 4     this.Func = function(arg){ 
 5         return this.Name + arg; 
 6     } 
 7 } 
 8    
 9 var obj = new Foo('alex', 18); 
10 var ret = obj.Func("sb"); 
11 console.log(ret);

对于上述代码需要注意:

  • Foo充当的构造函数
  • this代指对象
  • 创建对象时需要使用 new

上述代码中每个对象中均保存了一个相同的Func函数,从而浪费内存。使用原型和可以解决该问题:

 1 function Foo (name,age) { 
 2     this.Name = name; 
 3     this.Age = age; 
 4 } 
 5 Foo.prototype = { 
 6     GetInfo: function(){ 
 7         return this.Name + this.Age 
 8     }, 
 9     Func : function(arg){ 
10         return this.Name + arg; 
11     } 
12 }

 

 

 

posted @ 2017-10-23 22:05  浪子斌  阅读(392)  评论(0编辑  收藏  举报