<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<!--script标签之中还有几个属性
例如
可选) src
异步脚本 async 表示立即下载文本 执行顺序不一定按照指定的先后顺序执行
charset
延迟脚本 defer 延迟文本加载
已废弃) language 用于编码的脚本语言
必选) type
同时script脚本的插入位置不一定要在head里面,插入在body里面的时候浏览器解析页面会一步步解析,可以直观上给用户更好的体验,而不是一开始就是空白页面
-->
<!--JS代码需要编写到script标签中-->
<script type="text/javascript">
/*
* 控制浏览器弹出一个警告框
* alert("哥,你真帅啊!!");
*/
/*
* 让计算机在页面中输出一个内容
* document.write()可以向body中输出一个内容
* document.write("看我出不出来~~~");
*/
/*
* 向控制台输出一个内容
* console.log()的作用是向控制台输出一个内容
* console.log("你猜我在哪出来呢?");
*/
alert("哥,你真帅啊!!");
document.write("看我出不出来~~~");
console.log("你猜我在哪出来呢?");
</script>
</head>
<body>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<!--
可以将js代码编写到外部js文件中,然后通过script标签引入
写到外部文件中可以在不同的页面中同时引用,也可以利用到浏览器的缓存机制
推荐使用的方式
-->
<!--
script标签一旦用于引入外部文件了,就不能在编写代码了,即使编写了浏览器也会忽略
如果需要则可以在创建一个新的script标签用于编写内部代码
-->
<script type="text/javascript" src="js/script.js"></script>
<script type="text/javascript">
alert("我是内部的JS代码");
</script>
<!--
可以将js代码编写到script标签
<script type="text/javascript">
alert("我是script标签中的代码!!");
</script>
-->
</head>
<body>
<!--
可以将js代码编写到标签的onclick属性中
当我们点击按钮时,js代码才会执行
虽然可以写在标签的属性中,但是他们属于结构与行为耦合,不方便维护,不推荐使用
-->
<button οnclick="alert('讨厌,你点我干嘛~~');">点我一下</button>
<!--
可以将js代码写在超链接的href属性中,这样当点击超链接时,会执行js代码
-->
<a href="javascript:alert('让你点你就点!!');">你也点我一下</a>
<a href="javascript:;">你也点我一下</a>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript">
/*
多行注释
JS注释
多行注释,注释中的内容不会被执行,但是可以在源代码中查看
要养成良好的编写注释的习惯,也可以通过注释来对代码进行一些简单的调试
*/
//单行注释
//alert("hello");
//document.write("hello");
console.log("hello"); //该语句用来在控制台输出一个日志
/*
* 1.JS中严格区分大小写
* 2.JS中每一条语句以分号(;)结尾
* - 如果不写分号,浏览器会自动添加,但是会消耗一些系统资源,
* 而且有些时候,浏览器会加错分号,所以在开发中分号必须写
* 3.JS中会忽略多个空格和换行,所以我们可以利用空格和换行对代码进行格式化
*
*/
alert("hello");
</script>
</head>
<body>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript">
/*
* 字面量,都是一些不可改变的值
* 比如 :1 2 3 4 5
* 字面量都是可以直接使用,但是我们一般都不会直接使用字面量
*
* 变量 变量可以用来保存字面量,而且变量的值是可以任意改变的
* 变量更加方便我们使用,所以在开发中都是通过变量去保存一个字面量,
* 而很少直接使用字面量
* 可以通过变量对字面量进行描述
*/
//声明变量
//在js中使用var关键字来声明一个变量(ES5)
//在es6里面就开始推荐let的关键字来声明
//两者有着一定的区别,详情请见下面
在非严格模式(non-strict mode)下的var 或者函数声明时
通过var声明的变量或者非严格模式下(non-strict mode)创建的函数声明没有块级作用域。在语句块里声明的变量的作用域不仅是其所在的函数或者 script 标签内,所设置变量的影响会在超出语句块本身之外持续存在。 换句话说,这种语句块不会引入一个作用域。尽管单独的语句块是合法的语句,但在JavaScript中你不会想使用单独的语句块,因为它们不像你想象的C或Java中的语句块那样处理事物。例如:
var x = 1;
{
var x = 2;
}
console.log(x); // 输出 2
输出结果是 2,因为块中的 var x语句与块前面的var x语句作用域相同。在 C 或 Java中,这段代码会输出 1。
使用let和 const
相比之下,使用 let和const声明的变量是有块级作用域的。
let x = 1;
{
let x = 2;
}
console.log(x); // 输出 1
x = 2仅限在定义它的块中。
const的结果也是一样的:
const c = 1;
{
const c = 2;
}
console.log(c); // 输出1, 而且不会报错
注意,位于块范围之内的 const c = 2 并不会抛出SyntaxError: Identifier 'c' has already been declared这样的语法错误,因为在它自己的块中它可能是唯一一个被声明的常量。
使用let声明的变量在块级作用域内能强制执行更新变量,下面的两个例子对比:
var a = [];
for (var i = 0; i < 10; i++) {
a[i] = function () {console.log(i);};
}
a[0](); // 10
a[1](); // 10
a[6](); // 10
/********************/
var a = [];
for (let i = 0; i < 10; i++) {
a[i] = function () {console.log(i);};
}
a[0](); // 0
a[1](); // 1
a[6](); // 6
使用function
函数声明同样被限制在声明他的语句块内:
foo('outside'); // TypeError: foo is not a function
{
function foo(location) {
console.log('foo is called ' + location);
}
foo('inside'); // 正常工作并且打印 'foo is called inside'
}
//续之前的
var a;
//为变量赋值
a = 123;
a = 456;
a = 123124223423424;
//声明和赋值同时进行
var b = 789;
var c = 0;
var age = 80;
console.log(age);
</script>
</head>
<body>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript">
/*
* 标识符
* - 在JS中所有的可以由我们自主命名的都可以称为是标识符
* - 例如:变量名、函数名、属性名都属于标识符
* - 命名一个标识符时需要遵守如下的规则:
* 1.标识符中可以含有字母、数字、_、$
* 2.标识符不能以数字开头
* 3.标识符不能是ES中的关键字或保留字
* 4.标识符一般都采用驼峰命名法
* - 首字母小写,每个单词的开头字母大写,其余字母小写
* helloWorld xxxYyyZzz
*
* - JS底层保存标识符时实际上是采用的Unicode编码,
* 所以理论上讲,所有的utf-8中含有的内容都可以作为标识符
*/
/*var if = 123;
console.log(if);*/
//千万不要这么用
var 锄禾日当午 = 789;
console.log(锄禾日当午);
</script>
</head>
<body>
</body>
</html>
补充
补充:js的
保留字和关键字
关键字
关键字可用于表示控制语句的开始或结束,或者用于执行特定操作等。关键字也是语言保留的,不能用作标识符。以下是ECMAScript的全部关键字:
break | do | instanceof | type
case | else | new | var
catch | finally | return | void
continue | for | switch | while
debugger | function | this | with
default | if | throw
delete | in | try
保留字
保留字也不能用作标识符,尽管保留字在这门语言中还没有任何特定的用途,但它们有可能在将来被用作关键字。以下是ECMA-262第3版定义的全部保留字:
abstract | enum | int | short
boolean | export | interface | static
byte | extends | long | super
char | final | native | synchronized
class | float | package | throws
const | goto | private | transient
debugger | implements | protected | volatile
double | import | public
第5版把在非严格模式下运行时的保留字缩减为下列这些:
class | enum | extends | super
const | export | import
在严格模式下,第五版还对以下保留字施加了限制”
implements | package | public
interface | private | static
let | protected | yield
注意:let和yield是第5版新增的保留字,其他都是第3版定义的。
在实现ECMAScript3和JavaScript引擎中使用关键字作标识符,会导致“Identifier Expected”错误。而使用保留字作标识符可能会也可能不会导致相同的错误,具体取决于特点的引擎。
除了上面列出的保留字和关键字。ECMA-262第5版对eval和arguments还施加了限制。在严格下,这两个名字也不能用作标识符或属性名,否则会抛出错误。
————————————————
关于补充部分
原文链接:https://blog.csdn.net/y935072878/article/details/87870066