JavaScript入门

一、js如何使用

<script>

</script>

以上标签可以放在页面的任何位置,且可放多个。

1.页面内置js

<script type="text/javascript">
        document.write("hello world!");
    </script>

2.外部js文件

<script type="text/javascript" src="./demo.js">
        document.write("hello world!");
    </script>

在js文件夹下创建demo.js文件有以下内容

document.write("hello world!");

对于两种方式的选择

  • 推荐使用第二中使用js的方式,因为在正常使用规范下,建议结构、行为、样式相分离,即html、js、css相分离。
  • 两种方式不能同时使用,否则会以第二种方式为准

二、JavaScript的基本语法

参考https://www.w3school.com.cn/js/index.asp,在此仅取几点介绍

规范代码格式

<script>
        var a = 10,
            b = 20,
            c;
    </script>

变量

  • 在JavaScript中,var定义变量,变量的类型由其变量赋的值的类型决定。

原始类型

  • Number、String、Boolean、undefined、null
  • undefined只有一个值,未定义时会如此显示。
  • null 当变量定义后没有赋值的话,会以此占位。

引用类型

var arr1 = [1,2];
    var arr2 = arr1;
    arr2.push(1);
    //此时 arr1 = [1,2,1]; arr2 = [1,2,1]

三、JavaScript错误以及响应

  1. 低级错误(语法解析错误)
  2. 逻辑错误
  • js语法错误会引发代码终止,但不会影响其他js代码块
  • 浏览器在加载某一JavaScript代码块(或者js文件)时,会先整体检查是否由语法错误,即如果存在1类型错误,则会直接报错,该JavaScript代码块(或者js文件)所有语句均不会被执行;此后,则会逐语句检查代码,如果存在2类型错误,则会在逻辑错误出终止,即会执行逻辑错误前语句,报错语句以及其后语句不会被执行。

四、JavaScript运算符

赋值的顺序,由右至左,计算的顺序,由左至右;
优先计算再复制,且排序的时候括号优先。

对于“+”

1. 数字运算,字符串连接  
  2. 任何类型加上字符串最终结果都会变为字符串。

对于“/”

0/0 为NaN (Not A Number)
4/0 为Infinity (无限的)
-4/0 为-Infinity
  • 赋值语句的优先级最低,()的优先级最高
  • NaN infinity 都为数字类型

逻辑运算符
逻辑运算符有

  • &&(与)
  • ||(或)
  • !

_其中undefine、null、""、false、0 会为假,其余均为假
对于与或运算符,会存在短路现象,例如

// &&
    var a = 1&&6;                   //此时a的值会为6
    //⬆在这里对于如果第一个表达式为真,则会继续判断下一个表达式是否为假,如果下一个表达式后不存在下一个表达式,则以该值作为结果
    //依据该短路特性,可以将其作为if语句使用,例如
    1>2&&document.write("hello world");

    // ||
    var b = 0||8;                   //此时 b的值为0
    var b = 7||8;                   //此时 b的值为7
    //与&&相似但与&&机制规则差不多相反,也是具有短路特性,当第一个表达式为真则不会判断下一个表达式,该语句的值为第一个表达式的值,如果第一个为假.则会执行下一个.
    //应用
    var event= e||window.event;

五、循环语句

可参考https://www.w3school.com.cn/js/js_operators.asp

以下为几个涉及循环语句的题目

  1. 输入n,求2的n次方阶乘
var n = parseInt(window.prompt('input'));
    var count = 1;
    while (n--) {
        count *= 2;
    }
    document.write("2的n次方为" + count);
  1. 输入n,求n!
var n = parseInt(window.prompt('input'));
    //n的阶乘
    var jiecheng = 1;
    for (var i = 0; i < n; i++) {
        jiecheng = jiecheng * (i + 1);
    }
    document.write(jiecheng);
  1. 输入n,求斐波那契数列第n位
// n 斐波那契数列
        var first = 1;
        var second = 1;
        var k;
        if (n == 1 && n == 2)
            k = first;
        for (var i = 3; i <= n; i++) {
            k = first + second;
            first = second;
            second = k;
        }
        document.write(k);
  1. 输入n,反向输出n.例如,输入数字123,反向输出321.
//反向输出
        var s = 0;
        do {
            s = n % 10;
            n = n / 10;
            n = parseInt(n);    //与上一行代码,共同达到n的整除结果
            document.write(s);
        } while (n > 0);
  1. 求100以内质数
for (var i = 2; i <= 100; i++) {
            var f = true;
            for (var j = 2; j < Math.sqrt(i); j++) {
                if (i % j == 0) {
                    j = 100;
                    f = false;
                }
            }
            if (f) {
                document.write(i + " ");
            }
        }

六、附加:主流浏览器以及其内核

  • IE trident
  • Chrome webkit/blink
  • Firebox gecko
  • Opera presto
  • Safari webkit