zoukankan      html  css  js  c++  java
  • JavaScript基础

    一、基本解释

    JavaScript是一种脚本语言。
    脚本,一条条的文字命令。执行时由系统的一个解释器,将其一条条的翻译成机器可识别的指令,然后执行。常见的脚本:批处理脚本、T-SQL脚本、VBScript等。(.net生成的exe文件用记事本打开看不懂。)
    HTML只是描述网页长相的标记语言,没有计算、判断能力,如果所有计算、判断(比如判断文本框是否为空、判断两次密码是否输入一致)都放到服务器端执行的话网页的话页面会非常慢、用起来也很难用,对服务器的压力也很大,因此要求能在浏览器中执行一些简单的运算、判断。JavaScript就是一种在浏览器端执行的脚本语言。

    二、语法概述

    大小写敏感,JavaScript严格区分大小写。(n与N是两个不同的变量。)
    弱类型语言(声明变量都用var),不存在int n=10;string s=“a”;的情况,所有变量都用var。因为是“动态类型”,所以下面这段代码是合法的:var n=10;n=“a”;

    //Javascript如果遇到错误,有错误的<script></script>中的代码不会执行,但是不会影响后面的而其他<script></script>代码和html的显示。

    三、js的事件

    JavaScript中也有“事件”的概念。
    单击一个按钮显示当前时间。就触发了一个事件
    <input type=“button” onclick=“ js代码" />
    一个特殊的地方:单击一个超链接显示当前时间。
    <a href=“javascript:js代码”>热点文字</a>

    //<a href="javascript:alert('js弹出对话框');">执行</a>

    只有超链接的href中的JavaScript中才需要加“javascript:”,因为它不是事件,而是把”javascript:”看成像“http:”、“ftp:”、“thunder://”、“ed2k://”、“mailto:”一样的网络协议,交由js解析引擎处理。只有href中这是这是一个特例。
    文本框失去焦点后弹出消息对话框。onblur事件【演示】
    超链接为“死链”时,使用#与javascript:void(0);的区别。Void0没有用的值,不会去任何地方,就没有意义

    四、字符串

    字符串使用单引号’abc’。(双引号也行。推荐;html→双引号,js→单引号)
    注释://或者/**/

    五、数据类型

    共六种:
    Boolean(布尔)、Number(数字)、String(字符串)、Undefined(未定义)、Null(空对象)、Object(对象类型),undefined与其他值计算得到的结果不是我们想要的,但与数据库中的null稍有区别,比如与数字计算或与字符串计算结果。
    出了Object是引用类型以外,其他都是基本数据类型
    Undefined类型、Null类型都是只有一个值的数据类型,分别为undefined与null.
    基本类型与引用类型的区别
    String也是基本类型,不能为String添加动态属性,而引用类型时可以的。
    引用类型对象 instanceof 类型,判断某个值是否为某个类型,所有引用类型instanceof Object返回都是true

    六、undefined和null的区别

    JavaScript中的null与undefined(参考资料)
    undefined,表示一个未知状态
    声明了但是没有初始化的该变量,变量的值是一个未知状态(undefined)。 (访问不存在的属性或对象window.xxx)
    方法没有明确返回值时,返回值是一个undefined.
    当对未声明的变量应用typeof运算符时,显示为undefined(*)
    null表示尚未存在的对象,null是一个有特殊意义的值。可以为变量赋值为null,此时变量的值为“已知状态”(不是undefined),即null。(用来初始化变量,清除变量内容,释放内存)
    undefined==null //结果为true,但含义不同。
    undefined===null //false(*),先判断类型是否一致,然后判断值。
    ===严格等于、!==严格不等于
    由于==会将值转换类型后再判断是否相等,有时可能会有意想不到的结果,所以推荐使用===。但注意,有些情况使用==能带来更好的效果。

     六、转义符

    JavaScript中字符串同样需要转义符 ’ ’,与C#一样。
    想在页面输出:c:windowsmicrosoftvs.txt,这句话,需要这样写:alert(‘c:\windows\microsoft\vs.txt’);不能用@,@只在C#中有效。
    常见转义符:
    、 、’、”、\
    在用正则表达式的时候也会遇到转义符问题。(*)
    if-else、for、while、do-while、switch、continue、break的用法参考c#语法。for循环稍有差异:for(var i=0;i<10;i++){ … }
    注:switch判断时,是“全等于”,===

    七、类型转换

    parseInt(arg)//将指定的字符串,转换成整数
    parseFloat(arg)//将指定的字符串,转换成浮点数
    Number(arg)把给定的值(任意类型)转换成数字(可以是整数或浮点数);转换的是整个值,而不是部分值。如果该字符串不能完全转换为整型,则返回NaN。(Not a Number)
    isNaN(arg)//判断arg是否为一个非数字(NaN),NaN与NaN也不相等。
    String(arg)把给定的值(任意类型)转换成字符串;
    Boolean(arg)把给定的值(任意类型)转换成 Boolean 型;
    (*)eval(codeString)//将一段字符串的js代码,计算并执行。类似于动态SQL语句。var n1 = 'var n=10;var n2=n+10;alert(n2);';eval(n1);
    alert(eval(‘2+3’));
    eval(‘alert(100);’);

     八、函数声明

    JavaScript中声明函数的方式:(无需声明返回值类型)
    function add(i1, i2) {
    return i1 + i2; //如果不写return返回的是undefined
    }
    int add(int i1,int i2)//C#写法
    不需要声明返回值类型、参数类型。函数定义以function开头。
    var r = add(1, 2);
    alert(r);
    r = add("你好", "tom");
    alert(r);
    JavaScript中不像C#中那样要求所有路径都有返回值,没有返回值就是undefined。
    易错:自定义函数名不要和js内置、dom内置方法重名,比如selectAll、focus等函数名不要用。//不要与系统函数重名。(在单击事件中调用自己定义的focus方法,有问题。与系统的focus()方法重名了)

    九、JavaScript中没有方法重载。

    动态为方法传递参数,类似于.net中的params关键字作用
    <script type="text/javascript">
    function myFunc() {
    for (var i = 0; i < arguments.length; i++) {
    document.write(arguments[i]);
    document.write('<br/>');
    }
    }
    myFunc('张三', 18, '李四', 19);
    </script>

    十一、Array

    JavaScript中的Array对象就是数组,首先是一个动态数组,而且是一个像C#中数组、ArrayList、Hashtable等的超强综合体。
    数组的使用方式:
    var names = new Array();//无需初始化长度,动态
    names[0] = "tom";
    names[1] = "jerry";
    names[2] = "lily";
    循环遍历数组(for循环):
    for (var i = 0; i < names.length; i++) {
    alert(names[i]);
    }

    JS中的Array是一个宝贝,不仅是一个数组,还是一个Dictionary,还是一个Stack
    var pinyins = new Array();
    pinyins["人"] = "ren";
    pinyins["口"] = "kou";
    pinyins["手"] = "shou";
    alert(pinyins["人"]);
    alert(pinyins.人);
    字典风格的简化创建方式:
    var arr = {“人”:”ren”,“口”:”kou”};//json格式。
    像Hashtable、Dictionary那样用,而且像它们一样效率高。
    不能直接用for循环遍历,需要用forin循环。
    Dictionary风格数组的length为0。所以不能用for遍历

     十二、argument对象

     

    在函数代码中,使用特殊对象 arguments,开发者无需明确指出参数名,就能访问它们。

    例如,在函数 sayHi() 中,第一个参数是 message。用 arguments[0] 也可以访问这个值,即第一个参数的值(第一个参数位于位置 0,第二个参数位于位置 1,依此类推)。

    因此,无需明确命名参数,就可以重写函数:

  • 相关阅读:
    如何拯救任务栏
    VMware 11 安装 OS X 10.10 虚拟机
    控制台绘制正切曲线
    控制台绘制正弦曲线和余弦曲线同时显示
    控制台绘制正弦/余弦曲线
    一文看懂js中的clientX,clientY,pageX,pageY,screenX,screenY
    一文看懂js中元素的滚动大小(scrollWidth,scrollHeight,scrollTop,scrollLeft)
    一文看懂js中元素的客户区大小(clientWidth,clientHeight)
    一文看懂js中元素偏移量(offsetLeft,offsetTop,offsetWidth,offsetHeight)
    从头认识js-DOM1
  • 原文地址:https://www.cnblogs.com/pangzhixing/p/6000652.html
Copyright © 2011-2022 走看看