Zhonghui

每个不曾起舞的日子,都是对生命的辜负

User Tools

Site Tools


程序:javascript:javascript

JavaScript


问题

一个同名的变量可以重复声明很多次,一个从未声明过的变量也可以直接赋值,那这声明有什么用?至少和C++的声明机制是不一样的。

没有数组类型吗?

> var cars=new Array;
undefined
> typeof cars
'object'

“a”.constructor返回object的构造函数

类型转换

String(some)
Number(some)

判断是否是一个类的对象

arr = [1,2,3];
if(arr instanceof Array){
    document.write("arr 是一个数组");
} else {
    document.write("arr 不是一个数组");
}

异常处理

严格模式

作为String和Object的字符串有什么区别

类就是Object吗?这两者的概念是完全相同的吗

声明提升,但是初始化不会提升

严格模式


JavaScript包含的3部分:

  • ECMAScript(核心):JavaScript 语言基础;
  • DOM(文档对象模型):规定了访问HTML和XML的接口;
  • BOM(浏览器对象模型):提供了独立于内容而在浏览器窗口之间进行交互的对象和方法。

数据类型

数据有两种:变量字面量,变量是一个名称。字面量是一个值。

值类型(基本类型)

  • 字符串(String)
  • 数字(Number)
  • 布尔(Boolean)
  • 空(Null,可以通过将变量的值设置为null来清空变量)
  • 未定义(Undefined,这个值表示变量不含有值,null和undefined的值相等,但类型不等)
  • Symbol

引用数据类型(对象类型)

  • 对象(Object)
  • 数组(Array)
  • 函数(Function)
  • 正则(RegExp)
  • 日期(Date)

JavaScript的类型分为两种:原始数据类型(Primitive data types)和对象类型(Object types)。

原始数据类型

  • string
  • number
  • boolean
  • object
  • function
  • symbol

对象数据类型

  • Object
  • Date
  • Array

不包含任何值的数据类型

  • null
  • undefined

一些特例

  • NaN的数据类型是number
  • 数组(Array)的数据类型是object
  • 日期(Date)的数据类型为object
  • null的数据类型是object
  • undefined的数据类型为undefined
  • 使用String函数得到的字符串类型是string

定义一个对象

var person={ // 注意这个person是对象名,不是类型名
  firstname : "John",
  lastname  : "Doe",
  id        :  5566
};

获取值的类型

> typeof x; // Js是弱类型的语言,在运行过程中,值的类型可能改变
'number'

基础语法

输出

console.log('Hello'); // 除了字符串,也可以输出其他类型的内容

注释

JavaScript的注释方法和C++类似:

// 注释内容
/* 注释内容 */

语句

一条语句以分号结尾,但好像不是强制要求。

> x = 1
1
> y = 2;
2

严格模式

文件头部/函数头部定义以下字符常量即可进入严格模式,指令只允许出现在脚本或函数的开头

'use strict';

声明变量

声明变量使用var关键字,但使用前不强制要求声明,声明只是为了代码清晰。声明变量有3种方式:

// 1. 使用var声明变量
var name; // 一次声明一个变量,没有初始化的变量的值为undefined
var name, age, gender; // 一次声明多个变量
var name = "A"; // 声明的同时初始化变量
var name = "A", age = 20, gender; // 在一条声明中初始化部分变量
var name = "A", age = 20, gender = 'Male'; // 在一条声明中初始化全部变量
// 使用var声明的变量可以多次重复声明,重复声明时没有赋值的话,原来的值就不会丢失
var carname = "Volvo";
var carname; // 原来的值不会丢失
 
// 2. 使用let声明变量
// 使用let声明变量的语法说明和var声明变量的完全相同
let age;
let age = 32, name = "Tom";
// let不能重复声明
// 问:var有什么独特的地方?是不是let可以完全替代var
 
// 3. 使用const声明变量
// const在声明时,必须给变量赋初值
const pi = 3.1415;

流程控制

// 判断
if (condition1)
{
    // CODE
}
else if (condition2)
{
    // CODE
}
else
{
    // CODE
}
 
switch(n) // 这里对数据类型有要求吗?没有,可以是字符串等类型
{
    case 1:
        // CODE
    break;
 
    case 2:
        // CODE
    break;
 
    default:
        // CODE
}
 
// 循环
for (var i=0; i<5; i++)
{
    // CODE
}
 
var person={fname:"Bill", lname:"Gates", age:56}; 
for (x in person) // 用for循环遍历对象的属性
{
    txt=txt + person[x];
}
 
while (condition)
{
    // CODE
}
 
do
{
    // CODE
}
while (condition); // 和C一样
 
// 控制
// break:和C部分一样,用在switch和loop内部
// continue:和C完全一样,用在loop内部
// label:和break一起使用,此时break就能用于其他地方,用于跳出代码块
list: 
{
    // CODE
    break list;
    // CODE
}

运算

运算符 功能
= 赋值
+ +=
- -=
* *=
/ /=
% %=
++ 自增
自减
&& 并且
|| 或者
! 否定
== 值相等
!= 值不等
=== 值和类型相同
!== 值或类型不同
> >= < <= 判断大小
?: 和C一样

函数

// function是关键字
function functionname()
{
    // 执行代码
}
 
// 参数
function functionname(var1, var2)
{
    // 执行代码
}
 
// 返回值,使用return关键字
// 一个函数在不同的情况下,返回的数据可以是不同的,也可能在某些情况下不返回任何值

运行

JavaScript代码文件的后缀是js,可以使用以下指令运行:

node Hello.js

其他参照:

  • 使用Node.js运行Js脚本:NodeJs
  • Google的V8引擎
/var/www/DokuWikiStick/dokuwiki/data/pages/程序/javascript/javascript.txt · Last modified: 2022/07/25 19:58 (external edit)