JavaScript基础语法
Posted Stay--hungry
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript基础语法相关的知识,希望对你有一定的参考价值。
javascript与C++的相同点
注释方式、语句以分号结尾、变量赋值、自增自减、逻辑运算符,if语句、switch语句
输出
- 使用console.log()进行输出
var a = 1;
console.log(a);
console.log()也可以一次输出多个值,中间以空格隔开
var a = "hello", b = "JavaScript";
console.log(a, b);
数据类型
JavaScript 提供七种不同的数据类型,它们是: undefined(未定义)、null(空)、boolean(布尔型)、string(字符串)、symbol、number(数字)、bigint(可以表示任意大的整数)和 object(对象)。
可以用typeof
运算符确定变量或值的类型.
var a = 1, b = 1.2, c = true, d = "hello";
console.log(typeof a, typeof b, typeof c, typeof d); // number number boolean string
用var、let、const声明变量
可以向MATLAB一样直接创建变量:a = 1;
,如此创建的变量会被自动创建在 global 作用域中,形成全局变量。 这种创建方式也要求在创建时必须进行初始化。
当在代码其他地方无意间定义了一个变量,刚好变量名与全局变量相同,这时会产生意想不到的后果。 因此应该总是使用 var 关键字来声明你的变量。避免在一个函数中创建的变量在另一个函数中也可使用。
通过在变量前面使用关键字 var,声明一个变量,各种类型均可以用var声明。例如:
var a;
var str = "String";
var f = 3.1415;
变量名称可以由数字、字母、美元符号 $ 或者下划线 _ 组成,但是不能包含空格或者以数字为开头。
当 JavaScript 中的变量被声明的时候,未对它进行赋值时,该变量为 undefined。
- 当你对一个undefined类型的变量进行运算操作的时候,算出来的结果将会是 NaN,它的意思是 “Not a Number”。
- 当用一个类型为 undefined 的变量来做字符串拼接操作的时候,它会转换成字符串(string)undefined。
var a;
if (typeof a == 'undefined') //判断变量是否初始化
{
console.log("error");
}
在 JavaScript 中所有的变量和函数名都是大小写敏感的 ,要区别对待大写字母和小写字母。
注意:JavaScript使用 var 关键字来声明变量时,重复声明导致变量被覆盖不会报错。
在 ES6 中引入的新关键字let
解决了 var 关键字带来的这种潜在问题。 使用 let 关键字来代替 var 关键字后,重复声明变量时会报错。
即:当使用 let 的时候,同一名字的变量只能被声明一次。
JavaScript中也存在const
关键字,const 拥有 let 的所有优点,不同的是,通过 const 声明的变量是只读的。 这意味着通过 const 声明的变量只能被赋值一次,而不能被再次赋值。
const MAXSIZE = 100;
字符串
定义一个字符串必须要用单引号或双引号来包裹它。 当字符串中本身就包含引号 " 或者 ’ 时,应用‘\\’进行转义。
var a = "\\"JavaScrpt!\\"";
JavaScript 中的字符串可以使用开始和结束都是同类型的单引号或双引号表示。 与其他一些编程语言不同的是,单引号和双引号的功能在 JavaScript 中是相同的。
当需要在一个字符串中使用多个引号的时候,你可以使用单引号包裹双引号或者相反。 常见的场景比如在字符串中包含对话的句子需要用引号包裹。
var str = 'This is called "book"';
注意内外层使用的引号应该是不同的,即一个字符串在开头和结尾处必须有相同的引号。 如果在中间使用了相同的引号,字符串会提前中止并抛出错误。
当 + 操作符被用于一个字符串类型的值的时候,它被称作拼接操作符,作用为拼接其他字符串来创建一个新的字符串。
var a = 'Hello, ';
var b = "JavaScript";
var c = a + b; // c = "Hello, JavaSript"
var a = 'Hello, ';
var name = "Shao";
a += name;
console.log(a);
可以通过在字符串变量或字符串后面写上.length
来获得 String 的长度.
var a = "hello".length; //a = 5
var b = "hello";
var a = "hello", b;
b = a.length;
console.log(b);
字符串从下标0开始存入数组中。
var a = "hello"; //a[0] = h;
// a[a.length - n] 就是字符串的倒数第n个字符
在 JavaScript 中,字符串(String)的值是不可变的(immutable),这意味着一旦字符串被创建就不能被改变。
let myStr = "Bob";
myStr[0] = "J"; //无效
myStr 的值是不会改变成 Job 的,因为变量 myStr 是不可变的。 注意,这并不意味着 myStr 永远不能被改变,只是字符串字面量 string literal 的各个字符不能被改变。
改变字符串值的唯一方法是重新给它赋一个值。
运算
JavaScript中除法结果若是小数,则存储的就是小数,而不会取整。
在逻辑判断中,使用"=="时,若二者类型不同,JavaScript会自动进行类型转换,从而
1 == ‘1’ //true
3 == "3" //true
因此==
也被称为相对相等运算符。而===
被称为“严格相等运算符”,类型不同时,返回值为false。
1 === ‘1’ //false
3 === "3" //false
同理还有相对不等运算符!=
和严格不等运算符!==
。进行大于、小于、大于等于、小于等于等比较时,若类型不同也会自动进行类型转换。
7 > '3'; //true
'1' > 9; //false
3 >= '2' //true
数组
JavaScript中的数组功能非常强悍,可以存储多个不同类型的元素。
var a = ['hhhh', 2, 3.14];
console.log(a[0]);
还可以在其他数组中嵌套数组,构成多维数组。
var a = [["h", "e", "l", "l", "0"], 2, 3.14];
console.log(a); //输出 [ [ 'h', 'e', 'l', 'l', '0' ], 2, 3.14 ]
我们可以使用索引(indexes)来访问数组中的数据。
数组索引与字符串一样使用方括号来表示,不同的是,它们不是指定字符,而是指定数组中的一个条目。
var a = [["h", "e", "l", "l", "0"], 2, 3.14];
console.log(a[0]); //输出 [ 'h', 'e', 'l', 'l', '0' ]
console.log(a[0][0]); //输出 h
数组操作函数
- push:将一个数据添加到数组末尾
.push()
接受一个或多个参数(parameters),并把它压入到数组的末尾。
const arr2 = ["Stimpson", "J", "cat"];
arr2.push("happy", "joy");
console.log(arr2); //[ 'Stimpson', 'J', 'cat', 'happy', 'joy' ]
- pop:弹出并返回 数组末尾的元素
var Arr = [1, 4, 6];
var a = Arr.pop();
console.log(Arr); //[ 1, 4 ]
console.log(a); //6
- unshift:将一个元素添加到数组的头部
- shift:弹出并返回 数组第一个元素(头部元素)
函数
JavaScript中使用function
创建函数。
function functionName(param1, param2) //函数参数
{
...
return ... //可以有函数返回值
}
functionName(a, b); //使用函数名来调用函数
函数参数的类型不用指定。
function add(a, b)
{
console.log(a + b);
}
在函数外定义的变量具有 全局 作用域。 即在函数外定义的变量可以在代码的任何地方被调用。
而在一个函数内声明的变量,以及该函数的参数都具有局部(local)作用域。
一个程序中有可能具有相同名称的局部变量 和全局变量。 在这种情况下,局部变量将会优先于全局变量。
函数一般用 return 语句来返回值,但这不是必须的。 在函数没有 return 语句的情况下,当你调用它时,该函数会执行内部代码,返回值的类型是 undefined。
语句
switch语句中与case后的值进行比较时采用的是严格比较,即类型不同就是false.
对象
对象(object)与数组的区别在于数组使用索引来访问和修改数据,而对象中的数据是通过 properties 访问的。
对象就相当于结构体,但其内部可以存储的值更加多样,设置的属性名也是多样的。
注意:各属性之间是逗号隔开,属性名与属性值之间是冒号连接。
const cat = {
"name": "Whiskers", //属性为字符串
legs: 4, // 若属性名中只有一个字符串,则引号可以直接省略
100: 1, //数字也可以作为一种属性
"enemies": ["Water", "Dogs"] //属性的值为一个数组
};
console.log(cat.name, cat.legs, cat[100], cat.enemies);
访问字符串类型的属性使用点号表示法(.),访问数类型的属性使用方括号表示法([ ])。
如果要访问的属性名中包含空格,就必须使用方括号表示法来获取它的属性值。
const cat = {
legs: 4, // 若属性名中只有一个字符串,则引号可以直接省略
100: 1, //数字也可以作为一种属性
"hh hh": 3
};
console.log(cat.legs + cat[100] + cat["hh hh"]);
通过对对象上使用方括号表示法,还可以访问对象的属性值。
const cat = {
legs: 4,
100: 1,
"hh hh": 3
};
var a = "legs", b = "100", c = "hh hh";
console.log(cat[a], cat[b], cat[c]); //4 1 3
console.log(cat["legs"] + cat["100"] + cat["hh hh"]); // 8
与C++中的结构体相同,JavaScript对象的每个属性都可以作为一个变量使用。
JavaScript还允许动态地为对象添加、删除属性:
const myDog = {
"name": "Happy Coder",
"legs": 4,
"tails": 1,
"friends": ["freeCodeCamp Campers"]
};
myDog["bark"] = "woof"; //添加了一个bark属性
//myDog.barks = "woof"; 也可
delete myDog.barks; //删除了myDog中的barks属性;
//console.log(myDog);
以上是关于JavaScript基础语法的主要内容,如果未能解决你的问题,请参考以下文章