JavaScript基础语法学习笔记

1. JavaScript用法

html中的javascript脚本必须放在<script></script>之间. 脚本可以被放置在html页面的<body>和<head>部分中. 浏览器会解释并执行位于 <script> 和 </script>之间的 JavaScript 代码 .
以前需要在<script>标签中使用type="text/javascript"声明, 现在不需要这么做, 浏览器一样可以识别, 但是为了语法规范还是声明下比较好. JavaScript 是所有现代浏览器以及 HTML5 中的默认脚本语言。

2. JavaScript输出

JavaScript没有任何打印或者输出函数.
javaScript可以通过以下方式输出输出:

  • 使用window.alert()弹出警告框;
  • 使用document.write()方法将内容写到html文档中;
  • 使用innerHTML写入到html元素;
  • 使用console.log()写入到浏览器的控制台.

**使用window.alert(): **

<script>
    window.alert(5 + 6);
</script>

操作 HTML 元素:

<script>
document.getElementById("demo").innerHTML = "段落已修改。";
</script>

写到控制台:

<script>
a = 5;
b = 6;
c = a + b;
console.log(c);
</script>

3. JavaScript 语法

在编程语言中, 一个字面量是一个常量, 如3.14.

//1. 数字(Number)字面量可以是整数, 小数, 科学计数.
3.14
1002
123e5

//2. 字符串使用单引号或者双引号:
"walden"
'walden'

//3. 数组字面量:
[40, 100, 30, 2]

//4. 对象字面量:
{firstName:"wei", lastName:"walden", age:10}

//5. 函数字面量定义一个函数
function myFunction(a, b){ return a*b; }

//6. 变量
javaScript中使用`var`定义变量, 使用`=`为变量赋值.

** 变量是一个名称, 字面量是一个值. **

其它要点:

JavaScript 对大小写敏感。

avaScript 会忽略多余的空格。您可以向脚本添加空格,来提高其可读性。下面的两行代码是等效的:

var person="Hege";
var person = "Hege";

您可以在文本字符串中使用反斜杠对代码行进行换行。下面的例子会正确地显示:

document.write("你好 \
世界!");

注释:

//这是注释.
/*
这也是注释.
*/

JavaScript数据类型:
字符串(String)、数字(Number)、布尔(Boolean)、数组(Array)、对象(Object)、空(Null)、未定义(Undefined)。

//1. JavaScript 布尔
//   布尔(逻辑)只能有两个值:true 或 false。
var x=true;
var y=false;

//2. JavaScript 数组
var cars=new Array();
cars[0]="Saab";
cars[1]="Volvo";
cars[2]="BMW";
// 或者 (condensed array):
var cars=new Array("Saab","Volvo","BMW");
// 或者 (literal array):
var cars=["Saab","Volvo","BMW"];

// 3. JavaScript 对象
var person={firstname:"John", lastname:"Doe", id:5566};

对象属性有两种寻址方式:
name=person.lastname;
name=person["lastname"];

//4. Undefined 和 Null
Undefined 这个值表示变量不含有值。
可以通过将变量的值设置为 null 来清空变量。
可以通过将一个变量赋值为Null来置空一个变量.

//5.当您声明新变量时,可以使用关键词 "new" 来声明其类型:
var carname=new String;
var x=      new Number;
var y=      new Boolean;
var cars=   new Array;
var person= new Object;

//6. 访问js对象中的方法:
name = person.fullName();

// 你可以使用以下语法创建对象方法:
methodName : function() { code lines }
// 你可以使用以下语法访问对象方法:
objectName.methodName()

4. JavaScript函数

无参数的函数:

function functionname()
{
执行代码
}

带参数的函数:

function myFunction(var1,var2)
{
代码
}

局部JavaScript变量:

  • 在JavaScript函数内部声明的变量是局部变量, 所以只能在函数内部访问到(该变量的作用域是局部的).
  • 再不同的函数中可以使用名称相同的局部变量, 因为只有声明过该变量的函数才能识别出该变量.
  • 只要函数运行完毕, 本地变量就会被删除.
  • 函数参数只在函数内部起作用, 是局部变量.

全局javaScript变量:
在函数外声明的变量是全局变量, 网页上所有的脚本和函数都能够访问它.

JavaScript变量的生存周期:

  • JavaScript变量的声明周期从他们被声明的时间开始.
  • 局部变量会在函数运行以后被删除.
  • 全局变量会在页面关闭后被删除.

向未声明的JavaScript变量赋值:
如果把值赋给未声明的变量, 该变量将被自动作为全局变量声明.
如:

function getName(){
    name = "walden"; // name将会被声明为全局变量.
}

**在HTML中, 全局变量是window对象: 所有的数据和对象都属于window对象. 自己定义的全局变量, 或者函数可以覆盖window对象的变量或者函数. 局部变量, 可以覆盖全局变量的和函数. **

  • continue语句只能在循环中使用.
  • break语句, 只能在循环或者switch中使用.
  • 通过标签引用, break可用于跳出任何JavaScript代码块.

break标签引用:

label:
statements
// break 和 continue 语句仅仅是能够跳出代码块的语句。
break labelname; 

continue labelname;

5. JavaScript typeof, null, 和 undefined

5.1 typdef操作符

可以使用typedef操作符检测变量的数据类型.

typeof "John"                // 返回 string 
typeof 3.14                  // 返回 number
typeof false                 // 返回 boolean
typeof [1,2,3,4]             // 返回 object
typeof {name:'John', age:34} // 返回 object, 在js中数据是一种特殊的数据类型, 所以typedef [数组], 返回object

5.2 Null 和 undefined

在js中Null表示什么都没有. 用typeof检测Null返回是object, undefined表示没有设置值得变量, typedef检测还是undefined.

var person = null;           // Value is null, but type is still an object
var person = undefined;     // 值为 undefined, type is undefined

6 . js中的数据类型

在 JavaScript 中有 5 中不同的数据类型:
string
number
boolean
object
function
3 种对象类型:
Object
Date
Array
2 个不包含任何值的数据类型:
null
undefined

typedef操作符检测js变量的数据类型:

typeof "John"                 // 返回 string 
typeof 3.14                   // 返回 number
typeof NaN                    // 返回 number
typeof false                  // 返回 boolean
typeof [1,2,3,4]              // 返回 object
typeof {name:'John', age:34}  // 返回 object
typeof new Date()             // 返回 object
typeof function () {}         // 返回 function
typeof myCar                  // 返回 undefined (if myCar is not declared)
typeof null                   // 返回 object


// NaN 的数据类型是 number
// 数组(Array)的数据类型是 object
// 日期(Date)的数据类型为 object
// null 的数据类型是 object
// 未定义变量的数据类型为 undefined

**constructor属性: **
constructor属性可以返回所有js变量的构造函数:

"John".constructor                 // 返回函数 String()  { [native code] }
(3.14).constructor                 // 返回函数 Number()  { [native code] }
false.constructor                  // 返回函数 Boolean() { [native code] }
[1,2,3,4].constructor              // 返回函数 Array()   { [native code] }
{name:'John', age:34}.constructor  // 返回函数 Object()  { [native code] }
new Date().constructor             // 返回函数 Date()    { [native code] }
function () {}.constructor         // 返回函数 Function(){ [native code] }

使用 constructor 属性来查看是对象是否为数组 (包含字符串 "Array"):

function isArray(myArray) {
    return myArray.constructor.toString().indexOf("Array") > -1;
}

使用 constructor 属性来查看是对象是否为日期 (包含字符串 "Date"):

function isDate(myDate) {
    return myDate.constructor.toString().indexOf("Date") > -1;
}

JavaScript 类型转换:

// 1. 将数字转换成字符串
String(x)         // 将变量 x 转换为字符串并返回
String(123)       // 将数字 123 转换为字符串并返回
String(100 + 23)  // 将数字表达式转换为字符串并返回

//Number 方法 toString() 也是有同样的效果。
x.toString()
(123).toString()
(100 + 23).toString()

// 2. 将布尔值转换为字符串
String(false)        // 返回 "false"
String(true)         // 返回 "true"
// Boolean 方法 toString() 也有相同的效果。
false.toString()     // 返回 "false"
true.toString()      // 返回 "true"

// 3. 将日期转换为字符串
String(Date())      // 返回 Thu Jul 17 2014 15:38:19 GMT+0200 (W. Europe Daylight Time)

// Date 方法 toString() 也有相同的效果。
Date().toString()   // 返回 Thu Jul 17 2014 15:38:19 GMT+0200 (W. Europe Daylight Time)

// 4. 字符串转换成数字
Number("3.14")    // 返回 3.14
Number(" ")       // 返回 0 
Number("")        // 返回 0
Number("99 88")   // 返回 NaN

调试JS代码可以使用浏览器自带的console.log() 方法. 也可以设置断点进行调试.

7. JS变量提升

js中, 函数以及变量的声明都将被提升到函数的最顶部. js中变量可以使用之后再声明.
一下两段代码效果相同:

示例一:
x = 5; // 变量 x 设置为 5
elem = document.getElementById("demo"); // 查找元素 
elem.innerHTML = x;                     // 在元素中显示 x
var x; // 声明 x

实例二:
var x; // 声明 x
x = 5; // 变量 x 设置为 5

elem = document.getElementById("demo"); // 查找元素 
elem.innerHTML = x;                     // 在元素中显示 x

JavaScript 初始化不会提升:

以下两段代码效果是不同的:

实例 1
var x = 5; // 初始化 x
var y = 7; // 初始化 y
elem = document.getElementById("demo"); // 查找元素 
elem.innerHTML = x + " " + y;           // 显示 x 和 y

实例 2
var x = 5; // 初始化 x
elem = document.getElementById("demo"); // 查找元素 
elem.innerHTML = x + " " + y;           // 显示 x 和 y
var y = 7; // 初始化 y

JSON字符串转换成JavaScript对象:

var text = '{ "employees" : [' +
'{ "firstName":"John" , "lastName":"Doe" },' +
'{ "firstName":"Anna" , "lastName":"Smith" },' +
'{ "firstName":"Peter" , "lastName":"Jones" } ]}';
// 然后,使用 JavaScript 内置函数 JSON.parse() 将字符串转换为 JavaScript 对象:
var obj = JSON.parse(text);

8. JavaScript代码规范

  • 变量名推荐使用驼峰法来命名;
  • 通常运算符(+ - * /)前后都要加空格;
  • 推荐使用4个空格进行代码缩进, 不推荐使用tab,因为不同编辑器对tab解析不同.
  • 短的对象可以写成一行, 长的要写成多行,
  • 命名规则: 变量和函数为驼峰法, 全局变量为大写, 常量为大写.
  • HTML载入外部JS文件 <script src="myscript.js"> type属性不是必须的.
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,390评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,821评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,632评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,170评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,033评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,098评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,511评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,204评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,479评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,572评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,341评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,893评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,171评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,486评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,676评论 2 335

推荐阅读更多精彩内容

  • 1.HTML DOM (Document Object Model) document.getElementByI...
    廖马儿阅读 1,397评论 0 17
  • 第1章 JavaScript 简介 JavaScript 具备与浏览器窗口及其内容等几乎所有方面交互的能力。 欧洲...
    力气强阅读 1,103评论 0 0
  • FreeCodeCamp - Basic JavaScript 写在前面: 我曾经在进谷前刷过这一套题,不过当时只...
    付林恒阅读 16,396评论 5 28
  • 转眼间一个月过去了,10月13日我们学校迎来了‘颂歌献给党喜迎十九大’的歌咏活动。 一个美丽的下午,全校一千多个学...
    马文博tt阅读 204评论 0 0
  • 第一次在网上买票,就失策了,应该买了软卧备用,哪怕再买上硬卧再退了软卧,真不行,只好买硬座了。北马,一定得去看啊!
    织云一方阅读 153评论 0 1