晓夏

YoungCheung

Zhang Sir's technical way

Python之前端JavaScript

浏览量:736

一、JavaScript简介

   JavaScript是世界上最流行的脚本语言,因为你在电脑、手机、平板上浏览的所有的网页,以及无数基于HTML5的手机App,交互逻辑都是由JavaScript驱动的。

  简单地说,JavaScript是一种运行在浏览器中的解释型的编程语言。
  那么问题来了,为什么我们要学JavaScript?尤其是当你已经掌握了某些其他编程语言如Java、C++的情况下。
  简单粗暴的回答就是:因为你没有选择。在Web世界里,只有JavaScript能跨平台、跨浏览器驱动网页,与用户交互。
  Flash背后的ActionScript曾经流行过一阵子,不过随着移动应用的兴起,没有人用Flash开发手机App,所以它目前已经边缘化了。相反,随着HTML5在PC和移动端越来越流行,JavaScript变得更加重要了。并且,新兴的Node.js把JavaScript引入到了服务器端,JavaScript已经变成了全能型选手。
  JavaScript一度被认为是一种玩具编程语言,它有很多缺陷,所以不被大多数后端开发人员所重视。很多人认为,写JavaScript代码很简单,并且  JavaScript只是为了在网页上添加一点交互和动画效果。
  但这是完全错误的理解。JavaScript确实很容易上手,但其精髓却不为大多数开发人员所熟知。编写高质量的JavaScript代码更是难上加难。
  一个合格的开发人员应该精通JavaScript和其他编程语言。如果你已经掌握了其他编程语言,或者你还什么都不会,请立刻开始学习JavaScript,不要被Web时代所淘汰。

二、JavaScript入门

第一个程序

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <input type="text" id="user">
    <input type="button" onclick="GetData();" value="提交"/>
    <script>
        function GetData() {
            var i=document.getElementById('user')
            alert(i.value)
        }
    </script>
</body>
</html>

效果演示:

JavaScript语法

第一种形式:

<head>
    <script type="text/javascript" src="commons.js">
    </script>
</head>

 注意:JavaScript代码可以放到一个单独的.js文件,然后在HTML中通过<script src="..."></script>引入这个文件:

第二种形式:

<html>
<head>
  <script src="/static/js/abc.js"></script>
</head>
<body>
  ...
</body>
</html>

这样,/static/js/abc.js就会被浏览器执行。

把JavaScript代码放入一个单独的.js文件中更利于维护代码,并且多个页面可以各自引用同一份.js文件。

可以在同一个页面中引入多个.js文件,还可以在页面中多次编写<script> js代码... </script>,浏览器按照顺序依次执行。

有些时候你会看到<script>标签还设置了一个type属性:

<script type="text/javascript">
  ...</script>

但这是没有必要的,因为默认的type就是JavaScript,所以不必显式地把type指定为JavaScript。

第三种形式:

放在body内部的最下面

<script src="/static/js/abc.js"></script>

注释:

a.以//开头直到行末的字符被视为行注释,注释是给开发人员看到,JavaScript引擎会自动忽略:

// 这是一行注释
alert('hello'); // 这也是注释

 b.另一种块注释是用/*...*/把多行字符包裹起来,把一大“块”视为一个注释:

/* 从这里开始是块注释
仍然是注释
仍然是注释
注释结束 */
JS代码的书写
  1. html编写

  2. 临时浏览器终端的console

定时器

语法:setinterval(“执行的代码”,间隔时间)

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <script>
        function f1(){
            console.log(1)
        }
        //创建一个定时器
        // setInterval("alter(123);",5000);
        setInterval("f1();",5000);  //单位毫秒
    </script>
</body>
</html>

三、JavaScript变量

    JavaScript中变量的声明是一个非常容易出错的点,局部变量必须一个 var 开头,如果未使用var,则默认表示声明的是全局变量。变量相当于存储信息的"容器"。

    变量在JavaScript中就是用一个变量名表示,变量名是大小写英文、数字、$_的组合,且不能用数字开头。变量名也不能是JavaScript的关键字,如ifwhile等。申明一个变量用var语句,比如:

<script type="text/javascript">
 
    // 全局变量
    name = 'seven';
    function func(){
        // 局部变量
        var age = 18;
        // 全局变量
        gender = "男"
    }
</script>

四、数据类型

    计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值。但是,计算机能处理的远不止数值,还可以处理文本、图形、音频、视频、网页等各种各样的数据,不同的数据,需要定义不同的数据类型。在JavaScript中定义了以下几种数据类型:

  • 原始类型

    • 数字

    • 字符串

    • 布尔值

  • 对象类型

    • 数组

    • “字典”

    • ...

特别的,数字、布尔值、null、undefined、字符串是不可变。

// null、undefinednull是JavaScript语言的关键字,它表示一个特殊值,常用来描述“空值”。
undefined是一个特殊值,表示变量未定义。

1.数字(Number)

JavaScript不区分整数和浮点数,统一用Number表示,以下都是合法的Number类型:

123;      // 整数123
0.456;      // 浮点数0.456
1.2345e3;      // 科学计数法表示1.2345x1000,等同于1234.5
-99;      // 负数
NaN;      // NaN表示Not a Number,当无法计算结果时用NaN表示
Infinity;      // Infinity表示无限大,当数值超过了JavaScript的Number所能表示的最大值时,就表示为Infinity

转换:

  • 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.字符串

字符串是由字符组成的数组,但在JavaScript中字符串是不可变的:可以访问字符串任意位置的文本,但是JavaScript并未提供修改已知字符串内容的方法。

常见功能:

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

范例:欢迎领导莅临指导

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div id="i1" style="color: red;text-align:center ;font-size: 50px;background-color: #dddddd">欢迎领导莅临指导</div>
    <script>
        function func(){
            var tag=document.getElementById('i1');
            var content =tag.innerText;
            var f = content.charAt(0);
            var l = content.substring(1,content.length);
            var new_content = l + f;
            tag.innerHTML= new_content;
        }
        setInterval('func()',500)
    </script>
</body>
</html>

演示效果:

欢迎领导莅临指导

3.布尔值

 布尔值和布尔代数的表示完全一致,一个布尔值只有truefalse两种值,要么是true,要么是false

  • ==      比较值相等

  • !=       不等于

  • ===   比较值和类型相等

  • !===  不等于

  • ||        或

  • &&      且

4.数组

JavaScript中的数组类似于Python中的列表

常见功能:

obj.length          数组的大小
 
obj.push(ele)       尾部追加元素
obj.pop()           尾部获取一个元素
obj.unshift(ele)    头部插入元素
obj.shift()         头部移除元素
obj.splice(start, deleteCount, value, ...)  插入、删除或替换数组的元素
                    obj.splice(n,0,val) 指定位置插入元素
                    obj.splice(n,1,val) 指定位置替换元素
                    obj.splice(n,1)     指定位置删除元素
obj.slice( )        切片
obj.reverse( )      反转
obj.join(sep)       将数组元素连接起来以构建一个字符串
obj.concat(val,..)  连接数组
obj.sort( )         对数组元素进行排序

五、语句

1.循环语句

JavaScript中支持三种循环语句,分别是:

方式一:

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

方式二:循环的元素是索引

var names = ["alex", "tony", "rain"];
    for(var index in names){
    console.log(index);
    console.log(names[index]);
}

方式三:

while(条件){   
     // break;
     // continue;}

2.条件语句

if语句

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

PS:支持与或非

==   值相等        

===  值和类型都相等        

&&   and

||   or


switch语句

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


.

神回复

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。