javascript基础一

basic

在这里,不想直接照抄某个网站的文章或者观点,只是标注一些注意点

对大小写敏感

Comments

// /* */
tips: /* 但是, 你不能, /* 嵌套注释 */ 语法错误 */

Declarations

var
let 声明块范围局部变量(block scope local variable),可选择将其初始化为一个值。
const 声明一个只读(read-only)的有名字的常量。

声明变量(Declaring variables)

  • 使用关键词 var。
  • 直接赋值。
  • 使用关键词let。
    tips:时用来声明语句块代码段的局部变量(block scope local variable)。

对变量求值(Evaluating variables)

用var 和let声明为赋初值的变量,只会被设定为undefined.

tips - undefined值在布尔类型环境中会被当作false undefiend --> false

  • 数值类型环境中undefined值会被转换为NaN undefiend --> NaN(Not a Number)
  • 空值 null 在数值类型环境中会被当作0来对待 null --> 0
var a = undefined;
var a ;

变量作用域

if(true){
  var  x= 5;
}
console.log(x);//5

if (true) {
  let y = 5;
}
console.log(y); // ReferenceError: y is not defined

tips:ECMAScript 6 之前的JavaScript没有 语句块 作用域;相反,语句块中声明的变量将成为语句块所在代码段的局部变量。不是语句块作用域,声明了 x 的那个函数(或全局范围)。

声明提升

x = undefined;
console.log(x === undefined); 
var x =3;
 
var myvar = "my value";
(function(){
  console.log(myvar);
  var myvar = "local value";
})(); 


var myvar1 = "my value";
(function(){
  var myvar1 ;
  console.log(myvar1);
  var myvar1 = "local value";
})(); 

tips:变量声明提升了,但是其值赋予undefined.

全局变量

其对象是window

window.variable
parent.phoneNumber

Constants..常量

const prefix="404";

常量必须被初始化为某个值。

tips:不能用于变量或函数名相同的名字来命名常量.

数据结构和类型

识别7种值

  • 6种是 原型的数据类型

Boolean null undefined ,Number , String, Symbol

typeof关键字,查看其类型.
typeof Boolean; //function
typeof null; // object
typeof NULL; // undefiend
typeof undefiend; //undefiend
typeof Number; //function
typeof String;//function
typeof Symbol;//function
typeof Object;//function

通过typeof可以看出,Boolean、Number、String、Symbol的类型是function,null是一个关键字,用于表示空值的对象。NULL则是表示一个变量,值为undefined。Symbol是在 ECMAScript 6 中新添加的类型,一种数据类型,它的实例是唯一且不可改变的。

  • 以及Object对象

自动转换

tips:"37" - 7 ;//30,自动转换成数字
"37"+7;//377,自动转换成字符串

converting strings to numbers

parseInt()和parseFloat();

tips:将数字字符串转换成数字的方法parseInt(),parseFloat(),

还有单目加发运算符

'1.1'+'1.1';//1.1.1.1
(+'1.1')+(+'1.1');//2.2

字面值(Literals)

字面值是由语法表达式定义的常量;或,通过由一定字辞组成的语词表达式定义的常量

在JavaScript中,你可以使用各种字面值。这些字面值是脚本中按字面意思给出的固定的值,而不是变量。(译注:字面值是常量,其值是固定的,而且在程序脚本运行中不可更改 ).
字面值的类型如下:

  • 数组字面值(Array literals)
  • 布尔字面值(Boolean literals)
  • 浮点数字面值(Floating-point literals)
  • 整数(Intergers)
  • 对象字面值(Object literals)
  • RegExp literals
  • 字符串字面值(String literals)

数组字面值(Array literals)

数组字面值是一个封闭在方括号对([])中的包含有零个或多个表达式的列表,其中每个表达式代表数组的一个元素。


tips:数组字面值中的多余逗号
若你在同一行中连写两个逗号(,),数组中就会产生一个没被指定的元素,其初始值是undefined(除了最后逗号去除的情况)。

var fish = ["Lion",  , "Angel"];
var fish = ["Lion", undefined , "Angel"];//等同

var fish = [ ,  ,  'Alison',  'Gavin',   ]
var fish = [ undefiend, undefiend, 'Alison', 'Gavin'  ]//最后的逗号会去掉
而且他俩的长度一样,都是.length = 4
var coffees = ['a', , 'b',  ,  , ];
var coffees = ['a' , undefined, 'b' , undefined, undefiend ];
console.log(coffees.length);//5

浮点数字面值(Floating-point literals)

语法:[(+|-)][digits][.digits][(E|e)[(+|-)]digits]


javascript基础一_第1张图片

对象字面值(Object literals)

对象字面值是封闭在花括号对({})中的一个对象的零个或多个"属性名-值"对的(元素)列表。

var sales = "tomacat";
function carType(name){
  return (name === 'hone')? name : "sorry";
};

var car ={myCar:  "staturn", getCar: carType('hone'),  special: sales};
console.log(car.myCar);//staturn
console.log(car.getCar);//hone
console.log(car.special); // tomacat 

tips:

  • 可以使用数字或字符串字面值作为属性名,或者在另一个字面内值嵌套一个字面值。
var carr = {mycara: {a: 'Saab', b: 'Jeep'}, 7: 'Mazda'};
  • 对象属性名可以是任意字符串,包括空串。如果对象属性名字不是合法的javascript标识符,它必须用""包裹。属性的名字不合法,那么便不能用.访问属性值,而是通过类数组标记("[]")访问和赋值。
    这里说的是,不是合法字符串,都需要通过类数组标记来访问,不能通过' . 属性'来访问。
var unus = {
  "": "an empty String",
  "!": "Bang"
}
//console.log(unus."");//SyntaxError: missing name after . operator
console.log(unus[""]);
//console.log(unus.!);//SyntaxError: missing name after . operator
console.log(unus["!"]);

var foo ={a : 'alpha', 2: 'two'};
console.log(foo.a); //alpha
console.log(foo[2]);//two

console.log(foo.a);
//console.log(foo.2);//SyntaxError: missing ) after argument list
console.log(foo[a]);//undefined,并不是Error: a is not defined
console.log(foo[2]);

console.log(foo["a"]);
console.log(foo["2"]);

RegExp字面值

一个正则表达式是字符被斜线围成的表达式。var foo =/asd+as/

字符串字面值(String literals)

字符串字面值可以包含有零个或多个字符,由双引号(")对或单引号(‘)对包围。

tips:字符串字面值后自动转换为一个临时字符串对象,就可以调用对象的方法,然后废弃掉那个临时的字符串变量。

参考文献:https://developer.mozilla.org/zh-CN/

PS: 若你觉得可以、还行、过得去、甚至不太差的话,可以“关注”一下,就此谢过!

你可能感兴趣的:(javascript基础一)