Python JavaScript day1

JavaScript(一种浏览器的编程语言)
1.存在形式
  1.跟CSS一样,可以导入文件来使用
  2.也可以写在开头 用<script></script>包括起来
  3.但是最好还是放在body的最后面,否则如果放在前面而JavaScript的操作又非常费时,就会使
    页面一直在加载而看不到body的内容
  4.里面有许多习惯跟单片机差不多,记得写完一个句子加;
2.变量
  var a = 123; 局部变量
  a = 123; 全局变量
  PS:可以每次写变量的时候都用局部变量,当需要全局变量的时候再改过来,避免出错
3.数据类型
  1.数字:JavaScript中不区分整数值和浮点数值,JavaScript中所有数字均用浮点数值来表示
    转换:
      parseInt() 将某值转换成数字,不成功则NaN
      parseFloat() 将某值转换成浮点数,不成功则NaN
    特殊值:
      NaN,非数字,可以使用isNaN(num)来判断
      Infinity,无穷大,可以使用isFinite(num)来判断
  2.字符串:
    字符串是由字符组成的数组,但在JavaScript中字符串是不可变的:可以访问字符串任意位置的文本,但是JavaScript并未提供修改已知字符串内容的方法。

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

 

  3.布尔类型:
    首字母是小写:a = true

    == 等于
    != 不等于
    === 比的时候类型相等
    !== 比的时候类型不相等
    || 或
    && 且

比如: a = '123' b = 123;
a == b 是true , 只比较值的大小,不考虑类型
a === b 就是false, 值和类型都要相同

  4.数组:
    类似于Python的列表,可以使用 a=[];  来创建数组

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

4.其他:
  转义:

            encodeURL(url);  把URL后面的的中文,括号等转换成浏览器可以识别的东西
            decodeURL(url);
            encodeURIComponent(); 把URL里的所有东西转换,包括//:之类的
            decodeURLComponent();
            escape(); 对字符串进行转义
            unescape(); 解码

  eval:
5.时间处理
  a = new Date;直接创建一个本时区的对线,可以用get来获得想要的值,用set来设置值
6.正则表达式:
7.语句:
  1.if

    if(条件){}
    else if(条件){}
    else{}

  2.switch

    switch(name){
    case '1': age = 123; break ;
    case '1': age = 456; break ;
    default : age = 789;
    }

  3.循环:
    1.while(条件){}
    2.for(var i=0;i<10;i++){} 根据条件循环(不能处理字典)
    3.for(var i in li){} 把li里东西的索引取出(可以处理字典,因为取出来的是KEY)
  4.异常处理:

    try{}
    catch(var){} 如果try抛出异常就执行这个语句,可以输入var变量
    finally{} 无论如何都会执行

    throw new Error('xxx') 主动创建一个错误

8.函数:
  普通函数:
    function f1(){}
  匿名函数:
    setInterval(function(){alert(1)},1000);
  自执行函数:
    (function (arg) {alert(arg)})(123) 自己会执行函数的函数
9.作用域:
  1.没有块级作用域,但是有let
    比如:

1 while(1){
2 let let1 = 2;
3 var var1 = 2;
4 }
5 alert(let1); //不可访问
6 alert(var1); //可以访问

  2.采用函数作用域:函数外面的无法访问函数里面的变量

function main(){var a = 'a'}
main();
console.log(a)//报错

  3.作用域链

xo = 'one';
function f1() {
var xo = 'two';
function f2() {
var xo = 'three'
console.log(xo);
}
f2();
}
f1();

输出 three

  执行console.log(xo);时会一层一层地往外找xo,如果有就输出,没有就继续往外找
4.作用域链在执行前就已经创建了

  例1

xo = 'one';
function f1() {
var xo = 'two';
function f2() {
console.log(xo);
}
return f2;
}
//var ret = f1();
//ret();
虽然没有调用f1,但是已经创建了作用域,且作用域f1中创建了var xo;但是值为undefined,
当执行时,f1 创建了var xo = 'two', var ret=f1{},而f1返回的是f2,f2的ox就要从里面往往外需找,在上一层找到var xo='two',所以ret的值是two。

  例2

xo = 'one';
function f1() {
var xo = 'two';
function f2() {
console.log(xo);
}
xo = 'three' ; //这里是对var xo 的重新赋值,不是创建全局变量xo,以为上面已经创建了var xo了
return f2;
}
var ret = f1();
ret();
作用域一层一层,所以ret的值是three

  例3

<script>
xo = 'one';
function f1() {
console.log(xo);
}
function f2() {
var xo = 'two';
return f1;
}
var ret = f2();
ret();
</script>

这样相当于ret 是f1,从f1的作用域开始往外找,所以ret就是 one

 

posted @ 2020-03-28 18:00  otome  阅读(154)  评论(0编辑  收藏  举报